Sehr simpler Taschenrechner - Hilfe!

Zitrus

Bekanntes Mitglied
Also zuerstmal meinen Code:

Java:
package lotto;
import java.util.Random;

public class lotto {
	public lotto() {}

public static void main(String[] args)
{   
	System.out.println("+, -, / , x ?");
	String Z1 = new java.util.Scanner(System.in).nextLine();
		
	if (Z1.equals("+")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		
		double result = Z2 + Z3;
		System.out.println ("Ergebnis:" + result);
	}
		
	else if(Z1.equals("-")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		
		double result = Z2 - Z3;
		System.out.println ("Ergebnis:" + result);
	}
	else if(Z1.equals("/")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		
		double result = Z2 / Z3;
		System.out.println ("Ergebnis:" + result);
	}
	else if(Z1.equals("x")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		
		double result = Z2 * Z3;
		System.out.println ("Ergebnis:" + result);
	}
	else {
		System.out.println (" Wähle zwischen +,-,/,x !");
		Z1 = new java.util.Scanner(System.in).nextLine();
	}
}
}

So nun zum Problem... Ich möchte einen kleinen Taschenrechner programmieren der sogut wie fertig ist nur soll er auch wenn ich etwas anderes außer den Rechenzeichen angebe z.b (1,2,3,a,b,c) , nochmal nach dem Rechenzeichen fragen.. Wie bekomme ich das hin?
 
Baue eine Schleife ein, welche solange das 1.Einlesen wiederholt bis ein gültiges Rechenzeichen eingegeben wurde. 🙂


EDIT:
Fall es dir noch nicht aufgefallen ist:
Du wiederholst ständig diese 2 Zeilen Code:
Java:
	System.out.println("Zahl 1 bitte!");
double Z2 = new java.util.Scanner(System.in).nextDouble();
Das scheit förmlich nach einer eigenen Methode 🙂
 
Zuletzt bearbeitet:
Pseudocode:
Java:
Scanner scanner = new java.util.Scanner(System.in);
String rechenzeichen = null;
while(solange das rechenzeichen nicht korrekt (=null) ist wiederholen) {	
    System.out.println("+, -, / , x ?");
    rechenzeichen = lies zeichen ein
    if(rechenzeichen ist nicht korrekt){
        rechenzeichen = null;
    }
}
.....
 
Java:
Scanner scanner = new java.util.Scanner(System.in); // Erzeugt neuen Scanner
String rechenzeichen = null; // Warum wird der String auf 0 gesetzt // Soll das null hier wirklich null sein oder ersetzt werden?
while(rechenzeichen != null) {	
    System.out.println("+, -, / , x ?");
    rechenzeichen = lies zeichen ein // Was ist mit lies zeichen ein gemeint?
    if(rechenzeichen == false){ // <--Stimmt das?
       rechenzeichen = null;  // Warum wieder auf null? 111elf

So hab ich das interpretiert bitte nicht lachen^^ Hab die Grundlagen bestimmt schon 3x wiederholt aber ich weiß echt nicht warum ich das nicht in meinen Kopf bekomme🙂
 
Zuletzt bearbeitet:
Hab es hinbekommen ! 😀 *freu*
Java:
package lotto;
import java.util.Scanner;
 
public class lotto {
	public lotto() {}
 
public static void main(String[] args)
{   
	System.out.println("+, - , / , x ?");
	String Z1 = new java.util.Scanner(System.in).nextLine();
	while(!Z1.equals("+") && !Z1.equals("-") && !Z1.equals("x") && !Z1.equals("/") ) {
	System.out.println("+ , - , / , x ?");
	Z1 = new java.util.Scanner(System.in).nextLine();
	}
	
	
	if (Z1.equals("+")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
 
		double result = Z2 + Z3;
		System.out.println ("Ergebnis:" + result);
	}
 
	else if(Z1.equals("-")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
 
		double result = Z2 - Z3;
		System.out.println ("Ergebnis:" + result);
	}
	else if(Z1.equals("/")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
 
		double result = Z2 / Z3;
		System.out.println ("Ergebnis:" + result);
	}
	else if(Z1.equals("x")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		double result = Z2 * Z3;
		System.out.println ("Ergebnis:" + result);
	}
	}
}
 
Da lässt sich noch einiges zusammenfassen und verallgemeinern:

Java:
public static void main(String[] args) {

		System.out.println("+, - , / , x ?");

		String Z1 = new java.util.Scanner(System.in).nextLine();

		while (!Z1.equals("+") && !Z1.equals("-") && !Z1.equals("x")
				&& !Z1.equals("/")) {

			System.out.println("+ , - , / , x ?");

			Z1 = new java.util.Scanner(System.in).nextLine();

		}

		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();

		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();

		double result = 0;

		if (Z1.equals("+")) {
			result = Z2 + Z3;
		} else if (Z1.equals("-")) {
			result = Z2 - Z3;
		} else if (Z1.equals("/")) {
			result = Z2 / Z3;
		} else if (Z1.equals("x")) {
			result = Z2 * Z3;
		}

		System.out.println("Ergebnis:" + result);

	}

Statt der vielen else if könntest du auch einen switch nehmen, das sähe dann so aus:

Java:
switch(Z1){
	case "+":
		result = Z2 + Z3;
		break;
	case "-":
		result = Z2 - Z3;
		break;
	case "x":
		result = Z2 * Z3;
		break;
	case "/":
		result = Z2 / Z3;
		break;
	default:
                             break;
		}
 
Also zuerstmal meinen Code:

Java:
	if (Z1.equals("+")) {
		System.out.println("Zahl 1 bitte!");
		double Z2 = new java.util.Scanner(System.in).nextDouble();
		System.out.println("Zahl 2 bitte!");
		double Z3 = new java.util.Scanner(System.in).nextDouble();
		
		double result = Z2 + Z3;
		System.out.println ("Ergebnis:" + result);
	}

nur soll er auch wenn ich etwas anderes außer den Rechenzeichen angebe z.b (1,2,3,a,b,c) , nochmal nach dem Rechenzeichen fragen..

Du meinst du willst an statt der Präfix-Notation, die du oben implementiert hast, die Infix-Notation implementieren?

Präfix-Notation ist (wie in Scheme): + 1 2
Infix-Notation ist (wie in Java): 1 + 2
 

Zurück
Oben