2017-09-30 30 views
0

我得到用户输入做了一些计算,然后反复要求用户重复执行,直到输入一个Sentinel值(在我的情况下为3)。使用while循环重复一组指令 - Java

我使用do-while循环,它并没有给我想要的输出,如下图所示,

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); 
} 
} 

我得到下面的输出,

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 

不过,我需要这样的事情, (提示用户选择号码不是what is 9 + 1

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: 

我在do声明中做错了什么?任何想法将不胜感激!

回答

2

它在我看来像你需要移动do {了几行。

只有do {while之间的部分得到重复,并且您需要包括询问用户需要哪种类型的问题并生成随机数。

然而,你将需要之前do声明userInput,如果你想用它作为while条件。

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

当我有以上的用户输入,我得到一个错误'用户输入不能解析为变量'。此外,当我有权在生成随机数字之上时,我得到的结果与以前相同! –

0

添加以下你做线,而

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); 

我也建议你在做使用开关,同时,因为它更实用的比,如果其他

+0

是的,接下来,我会尝试切换案例以完成相同的任务!感谢您的建议! –