限制重复添加测验 - 循环 - Java

时间:2017-09-29 04:29:35

标签: java while-loop do-while

我正在尝试在Java中进行编码,并开始进行基本的重复添加测验。

重复添加直到输入正确的答案正常,但是,当我尝试将其限制为3次试验时,它不会停在3,而是进行4次试验,如下所示,

import java.util.Scanner;

public class RepeatAdditionQuiz {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int number1 = (int) (Math.random() * 10);
    int number2 = (int) (Math.random() * 10);

    Scanner input = new Scanner(System.in);
    System.out.print("What is " + number1  + " + " + number2 + " : " );
    int answer = input.nextInt();
    int count = 0;
    while(count < 3) {

        if (number1 + number2 != answer) {
            System.out.print("Try again, What is " + number1  + " + " + number2 + " : " );
            answer = input.nextInt();
        }
        else
            System.out.println("You're correct ");

        count ++;
    }
    System.out.println("Your trails ended ");

}

}

这是我的输出,

What is 1 + 2 : 8
Try again, What is 1 + 2 : 6
Try again, What is 1 + 2 : 9
Try again, What is 1 + 2 : 9
Your trails ended 

正如你所看到的,我有四条跟踪第一条。当我尝试在while循环(打印What is 1 + 2 :)之前删除第一个用户输入时,我在控制台中看不到任何内容。我怎么能把它限制在3?

python我可以做这样的事情,

from random import randint

number1 = randint(0,9)
number2 = randint(0,9)

answer = number1 + number2
count = 0
while count < 3:
    print(number1, "+", number2)
    user_answer = int(input("What is number1  + number2: "))
    if answer == user_answer:
        print("yes, you're right")
        break
    else:
        print("You're wrong, please enter again")
    count +=1
print("Sorry, all trials are done! ")

我得到这样的输出,正是三条路径(每次我输错了答案),

8 + 5
What is number1  + number2: 16
You're wrong, please enter again
8 + 5
What is number1  + number2: 18
You're wrong, please enter again
8 + 5
What is number1  + number2: 18
You're wrong, please enter again
Sorry, all trials are done! 

我在java犯了什么错误?在while循环中有没有更好的方法?任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可以将主要方法更改为如下所示。基本上,你的代码是由Dave建议的更改和else块中的break语句。

希望这有帮助

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int number1 = (int) (Math.random() * 10);
    int number2 = (int) (Math.random() * 10);

    Scanner input = new Scanner(System.in);
    System.out.print("What is " + number1  + " + " + number2 + " : " );
    int answer = input.nextInt();
    int count = 0;
    while(count < 2) {

        if (number1 + number2 != answer) {
            System.out.print("Try again, What is " + number1  + " + " + number2 + " : " );
            answer = input.nextInt();
        }
        else{
            System.out.println("You're correct ");
            break;
        }


        count ++;
    }
    System.out.println("Your trails ended ");

}

答案 1 :(得分:1)

我更喜欢在像这样的情况下使用do-while循环

import java.util.Scanner;

public class RepeatAdditionQuiz {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int number1 = (int) (Math.random() * 10);
    int number2 = (int) (Math.random() * 10);

    Scanner input = new Scanner(System.in);
    System.out.print("What is " + number1 + " + " + number2 + " : ");
    int answer = input.nextInt();
    int count = 1;
    do {

        if (number1 + number2 != answer) {
            System.out.print("Try again, What is " + number1 + " + " + number2 + " : ");
            answer = input.nextInt();
        } else{
            System.out.println("You're correct ");
            break;
        }
        count++;
    } while (count < 3);
    System.out.println("Your trails ended ");

}

}

在此我将count初始化为1,因为我们已经在实例化时提供了一个输入答案。

答案 2 :(得分:1)

您的代码问题最初是您要求猜测答案,然后将计数初始化为0.

int answer = input.nextInt();
int count = 0;

您已经向用户询问了第一条路径,因此将计数初始化为1。

int count = 1;

解决这类问题的另一种方法是使用@Ayush Goyal提到的do-while。

答案 3 :(得分:0)

要接近你的Python示例,你可以尝试这样的事情

public static void main(String[] args) {
    // TODO Auto-generated method stub
    int number1 = (int) (Math.random() * 10);
    int number2 = (int) (Math.random() * 10);

    Scanner input = new Scanner(System.in);
    int answer = 0;
    int count = 0;
    while(count < 3) {

         System.out.print("What is " + number1  + " + " + number2 + " : " );
         answer = input.nextInt();

        if (number1 + number2 != answer) {
        System.out.println("You're wrong, please enter again");

        }
        else{
            System.out.println("You're correct ");
            break;
        }


        count ++;
    }
    System.out.println("Your trails ended ");

}