java - 为什么这段代码会打印出无限量的“你猜怎么着?”
问题描述
我正在尝试在 1 到 100 的范围内进行数字猜谜游戏。如果用户猜对了数字,程序将停止。
我当前的代码:
import java.util.Scanner;
import java.util.Random;
public class GuessingGame {
public static void main(String[] args) {
Random randomNumber = new Random();
Scanner reader = new Scanner(System.in);
System.out.println("What's your guess? ");
int n = reader.nextInt();
reader.close();
int Number = randomNumber.nextInt(100 + 1);
int guess = n;
while (guess != Number) {
System.out.println("What's your guess? ");
new Scanner(System.in);
}
if (guess == Number) {
System.out.println("Your have guessed the correct number! ");
}
else if (guess < Number) {
System.out.println("Your number is too low! ");
}
else if (guess > Number) {
System.out.println("Your number is too high! ");
}
}
}
解决方案
这就是在 IDE 中使用格式化程序很有帮助的地方。您将能够看到循环之后的 if 条件应该在循环内,并且您应该从输入读取猜测。
顺便说一句,除非您明确不想再次从中读取任何内容,否则您永远不应该关闭输入。
尝试
Random randomNumber = new Random();
Scanner reader = new Scanner(System.in);
int number = randomNumber.nextInt(100 + 1);
while(true) {
System.out.println("What's your guess? ");
int guess = reader.nextInt();
if (guess == Number) {
System.out.println("You have guessed the correct number! ");
break; // no need to guess more
} else if (guess < Number) {
System.out.println("Your number is too low! ");
} else if (guess > Number) {
System.out.println("Your number is too high! ");
}
}
推荐阅读
- java - apache pdfbox - 如何测试文档是否被展平?
- python - 如何在 Biokit/corrplot 中设置颜色条的模式
- php - 如何在 Json 中搜索并获取子数据
- php - 如何在 fpdf 中添加图像标签
- javascript - VueJS如何在使用下拉选择时过滤数组数据
- javascript - 邮递员:您需要启用 JavaScript 才能运行此应用
- ios - 在模态样式演示iOS13上冻结SFSafariViewController上的横向方向
- python - Unabe 在 Beautifulsoup 中解析大表
- android - 检索 JSON 中的特定字段
- javascript - 在我的 Web 应用程序中为不同的打印对象设置本地打印机