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

Java中Scanner错误接收回车键为合法输入的原因与解决方案

问题成因

  1. 当用户直接按下回车键时,Scanner.nextLine() 会读取到长度为0的空字符串""作为输入内容。
  2. 现有inputChecker方法中,返回值标识loopChecker被初始化为true,如果传入的是空字符串,message.length()为0,两层for循环的遍历逻辑完全不会触发,方法会直接返回初始的true值,导致空输入被判定为合法。
  3. 额外说明:你当前写的双层for循环属于冗余逻辑,外层循环的i变量全程没有被使用,实际只需要一层循环就可以完成遍历校验。

可行解决方案

方案1:修改原有校验逻辑,增加空判断+优化遍历

public static boolean inputChecker(String message){
    // 空输入、全空白输入直接判定为不合法
    if (message == null || message.isBlank()) {
        return false;
    }
    String alphabet = "abcdefghijklmnopqrstuvwxyzæøå";
    // 单层循环遍历每个字符即可,发现非法字符直接返回无需继续遍历
    for (int i = 0; i < message.length(); i++) {
        if(alphabet.indexOf(message.charAt(i)) == -1){
            return false;
        }
    }
    return true;
}

方案2:用正则表达式简化校验逻辑

public static boolean inputChecker(String message){
    // 正则规则:仅允许匹配至少1个指定范围内的丹麦小写字母
    return message != null && message.matches("^[a-zæøå]+$");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:36:02