目标是要求用户猜测1到10之间的数字,生成1到10的随机数。
如果用户猜错号码告诉他们他们是"太高"或者"太低"让他们再试一次。
跟踪用户做出的猜测次数。
当用户猜出随机数时,告诉他们他们做了多少次猜测。
这就是我所拥有的。当我输入一个数字时,它会在while循环中返回正确的if语句。之后的任何输入都会返回相同的if语句,即使它不是真的。
我完全错了吗?我究竟做错了什么?对不起,我对while循环很新。
public static void main(String[] args) {
System.out.println("Guess a number from 1 to 10.");
Scanner userInput = new Scanner(System.in);
int userNumber = userInput.nextInt();
int rand = (int) (Math.random()*10) + 1;
int numOfGuesses = 0;
while (userNumber != rand) {
if (userNumber > rand) {
System.out.println("Too high, guess again.");
numOfGuesses++;
} if (userNumber < rand) {
System.out.print("Too low, guess again.");
numOfGuesses++;
}
userInput.nextInt();
}
if (userNumber == rand) {
System.out.println("That's the correct number!");
numOfGuesses++;
System.out.println("You made " + numOfGuesses + " guesses.");
}
}
}
答案 0 :(得分:4)
您永远不会更新userNumber
的值。将行userInput.nextInt();
替换为userNumber=userInput.nextInt();
答案 1 :(得分:4)
更改此项(在循环结束时)
userInput.nextInt();
到
userNumber = userInput.nextInt();
由于您没有存储用户的输入,因此循环只会永久运行(并且您的测试显示将被跳过)。
答案 2 :(得分:4)
userNumber = userInput.nextInt();
而不是
userInput.nextInt();
答案 3 :(得分:4)
您忘了将 next int 分配给您的变量:
while (userNumber != rand) {
if (userNumber > rand) {
System.out.println("Too high, guess again.");
numOfGuesses++;
} if (userNumber < rand) {
System.out.print("Too low, guess again.");
numOfGuesses++;
}
userNumber = userInput.nextInt(); // <-- here
}
答案 4 :(得分:2)
这是完整的工作代码。
请注意,如果您使用的是Java 1.6,那么应该使用try finally方法关闭扫描程序,您可以使用自动关闭接口 即。尝试(扫描仪userInput = new Scanner(System.in)){并省略最后全部。
public static void main(String[] args) {
Scanner userInput = null;
try {
System.out.println("Guess a number from 1 to 10.");
userInput = new Scanner(System.in);
int userNumber = userInput.nextInt();
int rand = (int) (Math.random()*10) + 1;
int numOfGuesses = 0;
while (userNumber != rand) {
if (userNumber > rand) {
System.out.println("Too high, guess again.");
numOfGuesses++;
} else {
System.out.println("Too low, guess again.");
numOfGuesses++;
}
userNumber = userInput.nextInt();
}
if (userNumber == rand) {
System.out.println("That's the correct number!");
numOfGuesses++;
System.out.println("You made " + numOfGuesses + " guesses.");
}
}
finally {
if (userInput != null) {
userInput.close();
}
}
}