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

Java中输入无效时返回上一步不重启程序及Scanner双回车问题解决

问题修复方案

核心问题原因

你修改后的会员等级输入代码中,在do-while循环外多写了一次sc.nextLine()调用,这行代码会在输入身份证号之后额外等待一次用户输入,因此才需要按两次回车才能进入会员等级输入环节。

修复代码

只需要删掉会员等级部分do-while循环外面的String membership_level = sc.nextLine();这行即可,修改后的完整会员等级输入代码如下:

// 会员等级输入
boolean isMemLvlInvalid = false;
String memLvl = "default";
String membership_level; // 仅声明变量,不要在此处调用nextLine方法
do{
    isMemLvlInvalid = false;
    System.out.println("请输入你想要注册的会员等级:输入G代表黄金会员、P代表铂金会员、D代表钻石会员(仅允许输入G/P/D)"); 
    membership_level = sc.nextLine();
    if (membership_level.equals("G")) {
        memLvl = "Gold";
    } else if (membership_level.equals("P")) {
        memLvl = "Platinum";
    } else if (membership_level.equals("D")) {
        memLvl = "Diamond";
    } else {
        System.out.println("输入无效,请重新输入正确的会员等级选项");
        isMemLvlInvalid = true;
    }
} while(isMemLvlInvalid);

额外优化建议

  • 不要重复创建Scanner对象:原有代码外层已经创建了Scanner input = new Scanner(System.in);,内层又创建了Scanner sc = new Scanner(System.in);属于多余操作,全程复用同一个Scanner实例即可,避免资源浪费。
  • 姓名、身份证号也可以参照相同的循环逻辑做合法性校验,比如身份证号可以校验长度、格式是否符合YYMMDDPB###G的规则,校验不通过就循环重新输入,匹配你要求的任意输入无效时重复对应输入步骤的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:04