使用while-loop-Java重复一组指令

使用while-loop-Java重复一组指令,java,loops,do-while,Java,Loops,Do While,我让用户输入一些计算,然后反复要求用户重复进行,直到输入一个哨兵值(在我的例子中是3) 我正在使用do而循环,它没有给出我想要的输出,如下所示 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("1: Addition"); S

我让用户输入一些计算,然后反复要求用户重复进行,直到输入一个哨兵值(在我的例子中是3)

我正在使用
do而
循环,它没有给出我想要的输出,如下所示

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
但是,我需要这样的东西,(提示用户选择数字,而不是
什么是9+1


我在
do
语句中做错了什么?任何想法都将不胜感激

在我看来,您需要将
do{
向上移动几行

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

但是,如果要将其用作
while
条件,则需要在执行之前声明
userInput

    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 ...

在我看来,您需要将
do{
向上移动几行

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

但是,如果要将其用作
while
条件,则需要在执行之前声明
userInput

    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 ...

在do while中添加以下行

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

我还建议您在do-while中使用switch,因为它比if-else更实用

在do-while中添加以下行

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

我还建议您使用switch in do while,因为它比else更实用

当我有上述用户输入时,我得到一个错误
userinput无法解析为变量
。此外,当我有上述生成随机数时,我得到的输出与以前相同!当我有上述用户输入时,我得到一个错误
无法将userinput解析为变量
。此外,当我在上面生成随机数时,我得到的输出与以前相同!是的,下一步,我将尝试为同一任务切换案例!感谢您的建议!是的,下一步,我将为同一任务切换案例!感谢您的建议!