Erste Schritte Rechenbeispiele

anfaenger

Mitglied
Hi Leute

Es wird die Methode aufgerufen und es soll solange eine zu lösende Aufgabe ausgegeben werden, bis der Benutzer mit 'n' abbricht.

Codeausschnitt:
Java:
private static void Rechenspiel() {
		
		char weitermachen = 'j';
		char[] op = {'+','-','*','/'};
		
		do{
				
		for(int i = 0; i < op.length; i++){
			int operand1 = (int) (Math.random() * 99 + 1);
			int operand2 = (int) (Math.random() * 99 + 1);
			double ergebnis;
				
				System.out.println("Lösen Sie: ");
				System.out.println(operand1 + " " + op[i] + " " + operand2);
				System.out.println();
				ergebnis = in.nextDouble();
				
				if(ergebnis == berechne(operand1, operand2, op[i])){
					System.out.println("Richtig!");
				}
				else{
					System.out.println("Falsch!");
				} 

				System.out.println("Neue Aufgabe?");
				weitermachen = (char) in.nextInt();
			}
		}while(weitermachen=='j');
	}

Egal was ich nun bei der Frage "Neue Aufgabe?" eingebe es kommt jedesmal:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)

Ich hoffe ihr könnt mir weiterhelfen.

LG
 
S

SlaterB

Gast
'Egal was ich nun eingebe' ist übertrieben, bei Eingabe einer Zahl kommt sehrwohl KEINE Exception,
und bei einer Methode readInt() kann man doch wohl spätestens nach 1 Min. Überlegen draufkommen, dass hier zwischen Zahlen und Buchstaben unterschieden wird?

eine Eingabe für einen char gibt es nicht wirklich, lies mit next() einen String ein, vergleiche mit equals mit String "j"

im Moment steht die Abfrage innerhalb der for-Schleife, die alle 4 Operanden durchläuft, das ist nicht ganz sinnvoll
 

anfaenger

Mitglied
Deswegen habe ich auch vor in.nextInt (char) geschrieben, aber okay mit String kommt keine Fehlermeldung, danke.

Es soll nach jeder Aufgabe gefragt werden, ob man eine Neue lösen möchte, deshalb steht die Frage innerhalb der for-Schleife.
Nur wenn ich jetzt "n" eingebe kommt die Frage erneut (weil sie innerhalb der for-Schleife steht)

Wollte also ein break einbauen, aber das habe ich wohl nicht richtig hinbekommen:

Java:
System.out.println("Neue Aufgabe?");
				weitermachen = in.next();
				if(weitermachen=="n") {
					break;
				}

Ist die Überlegung schon falsch oder die Umsetzung?
 

Neue Themen


Oben