[英]I wrote a java program but it seems to be an infinite loop
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 循環有問題,但我不知道是什么。 目標是提出減法問題,直到用戶正確為止。 有人可以幫我弄這個嗎?
問題是內部循環一旦進入就永遠不會返回,因為條件永遠不會改變。 您可以直接在條件內要求用戶輸入:
System.out.print("What is " + number1 + " - " + number2 + "? ");
while (input.nextInt() != number1 - number2) {
System.out.println("Wrong, try again.");
System.out.print("What is " + number1 + " - " + number2 + "? ");
}
代碼的 rest 的一些旁注:
(int) (Math.random() * 10)
,我建議使用Random#nextInt()
。while
循環可以替換為更易於閱讀for
循環。NUMBER_OF_QUESTIONS
使用camelCase或將其移動到 class 作為 static 成員。String[] args
)作為 main 方法的參數數組,而不是 C 樣式( String args[]
)。correctCount
將始終相同,如果不使用可能會被刪除。這是經過修改的 class 與上述建議:
import java.util.Random;
import java.util.Scanner;
public class SubtractionQuiz {
private static final int NUMBER_OF_QUESTIONS = 5;
public static void main(String[] args) {
final Scanner input = new Scanner(System.in);
final Random random = new Random();
int correctCount = 0;
for (int count = 0; count < NUMBER_OF_QUESTIONS; count++) {
int number1 = random.nextInt(10);
int number2 = random.nextInt(10);
// order numbers
if (number1 < number2) {
int temp = number1;
number1 = number2;
number2 = temp;
}
System.out.print("What is " + number1 + " - " + number2 + "? ");
while (input.nextInt() != number1 - number2) {
System.out.println("Wrong, try again.");
System.out.print("What is " + number1 + " - " + number2 + "? ");
}
System.out.println("Correct!");
correctCount++;
}
System.out.println("You got " + correctCount + " correct!");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.