You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发猜数字游戏如何实现循环接收输入直到猜对为止

问题原因

原代码的while循环内部只有打印提示的逻辑,没有重新读取用户新输入的代码,input变量的值永远停留在第一次输入的结果,只要第一次没猜对,就会进入死循环无限打印"Guess again",自然不会接收新输入。

修正后的完整代码

import java.util.Scanner;
// 类名首字母大写符合Java编码规范
public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        // 原test类同步调整首字母大写,保留原有随机数生成逻辑
        Test random = new Test();
        
        System.out.print("请输入最小值: ");
        int min = reader.nextInt();
        System.out.print("请输入最大值: ");
        int max = reader.nextInt();
        
        int answer = random.getRandom(min, max);
        
        System.out.print("请输入你猜的数字,范围在" + min + "-" + max + "之间: ");
        int input = reader.nextInt(); 
        
        while(input != answer) {
            // 大小提示逻辑可按需删除
            if(input > answer) {
                System.out.println("你猜的数字太大了");
            } else {
                System.out.println("你猜的数字太小了");
            }
            System.out.println("请重新猜测:");
            // 关键修改:循环内重新读取用户新输入更新input变量
            input = reader.nextInt();
        }
        
        // 跳出循环即代表输入和答案匹配,无需额外判断
        System.out.println("恭喜你猜对了!");
        // 关闭Scanner避免资源泄漏
        reader.close();
    }
}

核心修改点

  • 必须在while循环内部新增input = reader.nextInt();语句,每次猜错后都读取用户新的输入更新input变量的值,保证每次循环判断的是用户最新的输入结果
  • 原代码中循环外的if(input == answer)判断是冗余的,只要跳出while循环就代表输入值和答案完全匹配,可以直接打印猜对提示
  • 可额外补充猜大猜小的提示逻辑,优化游戏使用体验
  • 代码末尾新增reader.close()语句,关闭Scanner避免JVM资源泄漏
  • 注意Java规范中类名首字母需大写,原代码中的main类、test类命名不符合规范,建议调整为Main、Test

内容的提问来源于stack exchange,提问作者ntg_908

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:27:03