Java控制台猜数字游戏核心是输入、判断、循环三要素:用Random.nextInt(100)+1生成1–100随机数,Scanner.nextInt()后需用nextLine()清空换行符残留,用while(true)配合break实现猜中即止。

Java 控制台猜数字游戏的核心不是“写个游戏”,而是用最少的结构跑通输入、判断、循环这三件事。只要 Scanner 读得进数、Random 生成得对范围、while 循环不卡死,就能运行起来。
如何用 Random 生成 1–100 的随机整数
别直接写 new Random().nextInt(100) —— 它返回的是 0–99,不是 1–100。必须加偏移量:
Random rand = new Random(); int target = rand.nextInt(100) + 1; // ✅ 正确:0–99 + 1 → 1–100
常见错误是写成 rand.nextInt(1, 100)(这是 Java 17+ 的新 API,老版本会编译失败);或者漏掉 +1,导致永远猜不到 100。
为什么 Scanner.nextInt() 后接 nextLine() 会跳过输入
这不是 bug,是换行符残留导致的。用户输完数字按回车,nextInt() 只读数字,把 \n 留在缓冲区;紧接着 nextLine() 立刻读到这个空行,就“跳过了”。
立即学习“Java免费学习笔记(深入)”;
解决方法统一加一句 scanner.nextLine() 清缓冲:
- 如果只用数字输入,全程用
nextInt()就行,不用nextLine() - 如果中间要读提示语或是否继续(比如输入 "y"),就在
nextInt()后立刻补:scanner.nextInt(); scanner.nextLine(); // ? 清掉换行符 String choice = scanner.nextLine();
怎么设计循环让玩家能反复猜直到猜中
用 while (true) 最直白,靠 break 退出,比预设次数更符合“猜中为止”的逻辑:
while (true) {
System.out.print("请输入猜测的数字:");
int guess = scanner.nextInt();
if (guess == target) {
System.out.println("✅ 恭喜!猜中了!");
break;
} else if (guess < target) {
System.out.println("⬆️ 太小了");
} else {
System.out.println("⬇️ 太大了");
}
}
注意别写成 while (guess != target) —— 这会导致变量 guess 在循环外未定义,编译报错;也别在循环条件里调 nextInt(),会让逻辑变混乱。
真正容易卡住的地方,其实是输入非数字(比如输了个 "abc")——nextInt() 会抛 InputMismatchException 并卡住。实际项目里必须加 try-catch 和 scanner.next() 清错误 token,但简易版常被忽略这点。










