Java猜数字游戏如何添加输入数值超出1-50范围的提示逻辑
问题解决说明
现有代码存在的问题
- 缺少1~50的输入范围校验逻辑:Java确实没有内置对应输入范围限制的异常类型,因为数值超出业务要求范围属于业务逻辑校验范畴,输入本身是合法的整数,不需要走异常捕获流程,单独加判断即可。
- 猜对答案后没有终止循环的逻辑:当前代码猜对后
condition仍为true,会无限要求用户继续输入。
具体修改点
- 读取到用户输入的整数后,首先判断是否在
[1,50]区间内,若超出范围直接输出对应提示,无需进入和答案的大小比对逻辑 - 猜对答案的分支中,将
condition设为false,终止循环 - 补充必要的包导入语句,使用完输入流后主动关闭提升代码规范性
修改后完整代码
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
相关产品推荐
相关产品推荐

