java - 限制重复加法测验 - While 循环 - Java

标签 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 循环中是否有更好的方法?任何建议将不胜感激。

最佳答案

在这种情况下我更喜欢使用 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 ");

}

}

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

关于java - 限制重复加法测验 - While 循环 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46481830/

相关文章:

java - while 循环条件下找不到符号错误

c++输出太多次

java - 通过ActionListener更新JPanel内容

java - Java 的控制台输入和 ENTER 键

java - 仅当满足 for 循环中的所有条件时才中断 while 循环

Javascript:循环后打开 URL 给出正确答案

java - do-while 循环在回答 no 时不会终止

java - HQL 使用两列中的最大值对记录进行排序

java - Jsoup:从 anchor 标记中提取内部文本

C语言 : I want to see if a value of a[] is less than all the values of b[]