import java.util.Scanner;
public class FirstJava {
public static void main(String args[]) {
final int NUMBER_OF_QUESTIONS = 5;
int correctCount = 0;
int count = 0;
Scanner input = new Scanner(System.in);
while (count < NUMBER_OF_QUESTIONS) {
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);
if (number1 < number2) {
int temp = number1;
number1 = number2;
number2 = temp;
}
System.out.print("What is " + number1 + " - " + number2 + "? ");
int answer = input.nextInt();
while (number1 - number2 != answer) {
System.out.println("Wrong, try again.");
System.out.println("What is " + number1 + " - " + number2 + "? ");
}
System.out.println("Correct!");
count++;
correctCount++;
}
System.out.println("You got " + correctCount + " correct!");
}
}
我认为第二个while循环有问题,但我不知道是什么。目标是问减法问题,直到用户答对为止。有人能帮我吗?
1条答案
按热度按时间wh6knrhe1#
问题是内部循环一旦进入就不会返回,因为条件永远不会改变。您可以在条件中直接请求用户输入:
代码其余部分的一些旁注:
而不是
(int) (Math.random() * 10)
,我建议使用Random#nextInt()
.外部
while
-循环可以被更易于阅读的for
-循环。变量的用例
NUMBER_OF_QUESTIONS
或者将其作为静态成员移动到类中。使用java表示法(
String[] args
)对于main方法的参数数组而不是c样式(String args[]
).顺便说一句。。。
correctCount
将始终相同,如果不使用可能会被删除。这是一节有以上建议的改编课: