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

Java猜数字游戏如何添加输入数值超出1-50范围的提示逻辑

问题解决说明

现有代码存在的问题

  • 缺少1~50的输入范围校验逻辑:Java确实没有内置对应输入范围限制的异常类型,因为数值超出业务要求范围属于业务逻辑校验范畴,输入本身是合法的整数,不需要走异常捕获流程,单独加判断即可。
  • 猜对答案后没有终止循环的逻辑:当前代码猜对后condition仍为true,会无限要求用户继续输入。

具体修改点

  1. 读取到用户输入的整数后,首先判断是否在[1,50]区间内,若超出范围直接输出对应提示,无需进入和答案的大小比对逻辑
  2. 猜对答案的分支中,将condition设为false,终止循环
  3. 补充必要的包导入语句,使用完输入流后主动关闭提升代码规范性

修改后完整代码

import java.util.Scanner;
import java.util.InputMismatchException;

public class GuessNumber {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int answer = 28;
        int attempts = 0;
        boolean condition = false;
        System.out.println("请输入1 - 50之间的整数猜数字:");
        
        do {
            condition = true;
            try {
                int input = scan.nextInt();
                scan.nextLine();
                
                // 新增范围校验逻辑
                if (input < 1 || input > 50) {
                    System.out.println("输入超出范围,请输入1~50之间的整数");
                    System.out.println();
                    System.out.println("请输入1 - 50之间的整数猜数字:");
                    attempts++;
                } else if(input > answer) {
                    System.out.println("太大了");
                    System.out.println();
                    System.out.println("请输入1 - 50之间的整数猜数字:");
                    attempts++;
                } else if (input < answer) {
                    System.out.println("太小了");
                    System.out.println();
                    System.out.println("请输入1 - 50之间的整数猜数字:");
                    attempts++;
                } else {
                    int totalA = attempts + 1;
                    System.out.println();
                    System.out.println("恭喜你猜对了!总尝试次数:" + totalA );
                    // 新增终止循环逻辑
                    condition = false;
                }
                
            } catch (InputMismatchException e) {
                System.out.println("只能输入数字");
                System.out.println();
                System.out.println("请输入1 - 50之间的整数猜数字:");
                scan.nextLine();
            }
            
        } while(condition);
        scan.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:24:05