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

Java实现-5到5区间输入校验 二次无效输入被接收问题解决

问题根因

当前代码仅做了单次if条件判断,没有实现循环校验逻辑:

  • 第一次读取用户输入后,仅会执行1次合法性判断
  • 若第一次输入无效,进入分支打印错误提示后,直接读取第二次输入就结束了判断流程,不会对第二次及后续输入再做校验,因此会出现第二次输入无效值也直接被接收的问题
  • 额外注意:现有判断条件choice<=-5 || choice>=5会将边界值-5、5判定为无效,如果需求是闭区间(允许输入-5和5),需要将判断条件调整为choice < -5 || choice > 5
修复代码

使用while循环实现持续校验,只要输入值不满足合法区间要求,就持续提示用户重新输入,直到拿到合法值再执行后续业务逻辑:

int choice;
Scanner sc = new Scanner(System.in);
choice = sc.nextInt();
// 输入不合法时持续循环重输
while (choice <= -5 || choice >= 5) {
    System.out.println("=================================="+"\n"+"INVALID INPUT! PLEASE TRY AGAIN: "+"\n"+"==================================");                               
    choice = sc.nextInt();
}
// 输入合法,执行业务逻辑
// do stuff

如果希望把输入读取逻辑统一收敛,避免重复写sc.nextInt(),也可以用带首次输入标记的do-while写法:

int choice;
Scanner sc = new Scanner(System.in);
boolean isFirstInput = true;
do {
    if (!isFirstInput) {
        System.out.println("=================================="+"\n"+"INVALID INPUT! PLEASE TRY AGAIN: "+"\n"+"==================================");
    }
    choice = sc.nextInt();
    isFirstInput = false;
} while (choice <= -5 || choice >= 5);
// do stuff

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:12:19