2017-09-30 1 views
0

Ich bekomme Benutzereingaben tun einige Berechnungen und dann immer wieder den Benutzer bitten, wiederholt zu nehmen, bis ein Sentinel-Wert (3 in meinem Fall) eingegeben.Wiederholen Sie eine Reihe von Anweisungen mit While-Schleife - Java

I do-while Schleife verwenden und es meine gewünschte Ausgabe nicht geben, wie unten gezeigt,

import java.util.Scanner; 
public class Test { 

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

    System.out.println("1: Addition"); 
    System.out.println("2: Multiplication"); 
    System.out.println("3: Exit"); 

    System.out.print("Please choose a number: "); 

    int userinput = input.nextInt(); 

    // Generate two random numbers 
    int number1 = (int)(Math.random() * 10); 
    int number2 = (int)(Math.random() * 10); 
    do { 
     if (userinput == 1) { 
      System.out.print("What is " + number1 + " + " + number2); 
      int answer = input.nextInt(); 
      int tureanswer = number1 + number2; 

      if (answer == tureanswer){ 
       System.out.println("You're correct"); 
      } 
      else 
       System.out.println("Wrong,correct answer is " + tureanswer); 
     } 
     if (userinput == 2) { 
      System.out.print("What is " + number1 + " * " + number2 + " : "); 
      int answer = input.nextInt(); 
      int tureanswer = number1 * number2; 

      if (answer == tureanswer){ 
       System.out.println("Correct"); 
      } 
      else 
       System.out.println("Wrong. The correct answer is "+ tureanswer); 
     } 
    }while(userinput !=3); 
} 
} 

ich die folgende Ausgabe bekommen,

1: Multiplication 
2: Addition 
3: Exit 
Please choose a number: 1 
What is 9 + 1 12 
Wrong,correct answer is 10 
What is 9 + 1 

Ich brauche aber so etwas wie dies, (fordert den Benutzer die Nummer nicht what is 9 + 1 auszuwählen)

1: Addition 
2: Multiplication 
3: Exit 
Please choose a number: 1 
What is 9 + 1 12 
Wrong,correct answer is 10 

1: Addition 
2: Multiplication 
3: Exit 
Please choose a number: 

Was mache ich falsch in meiner do Aussage? Jeder Gedanke würde geschätzt werden!

Antwort

2

Es sieht für mich aus, als müssten Sie do { ein paar Zeilen nach oben verschieben.

Nur der Teil zwischen do { und while wird wiederholt, und Sie müssen das, um den Benutzer fragen, welche Art von Problem sie wollen, und die Zufallszahlen generieren.

Allerdings müssen Sie userInputvordo erklären, wenn Sie es als while Bedingung verwenden möchten.

int userInput; 

    do { 
     System.out.print("Please choose a number: "); 

     userinput = input.nextInt(); 

     // Generate two random numbers 
     int number1 = (int)(Math.random() * 10); 
     int number2 = (int)(Math.random() * 10); 

     if (userinput == 1) { 

      // and so on ... 
+0

Wenn ich über eine Benutzereingabe, ich bin Fehler 'Benutzereingabe kann nicht in eine Variable aufgelöst werden'. Wenn ich direkt über Zufallszahlen erzeuge, bekomme ich die gleiche Ausgabe wie zuvor! –

0

Fügen Sie die folgenden Zeilen in Ihrer do während

System.out.println("1: Multiplication"); 
System.out.println("2: Addition"); 
System.out.println("3: Exit"); 

System.out.print("Please choose a number: "); 

int userinput = input.nextInt(); 
int number1 = (int)(Math.random() * 10); 
int number2 = (int)(Math.random() * 10); 

Ich schlage vor, Sie auch Schalter in do zu verwenden, während weil es praktischer ist, als wenn sonst

+0

Ja, als nächstes werde ich versuchen, Fälle für die gleiche Aufgabe zu wechseln! Danke für den Vorschlag! –

Verwandte Themen