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

Java接收用户输入时输入空行如何正确跳出while循环

问题根因

循环无法正常退出的问题出在循环判断条件while (input.hasNext())上:Scanner的hasNext()方法会阻塞等待扫描到非空白的有效输入片段,当用户直接按回车键输入空行时,这个方法不会返回true,代码根本进不到循环体里,你写在内部的country.isEmpty()空行判断逻辑完全执行不到,自然没法触发break终止循环。

修复方法

把循环条件改成恒真while (true)即可——你已经在循环内部写了明确的空行退出逻辑,不需要靠hasNext()做循环边界控制。修复后的完整代码如下:

public void userInterface()
{
    // 交互逻辑
    Scanner input = new Scanner(System.in);

    System.out.println("Enter the date:");
    String date = input.nextLine();

    ArrayList<String> countries = new ArrayList<>();
    
    System.out.println("Enter the list of countries (end with an empty line):");
    
    while (true) {
        String country = input.nextLine();
        
        // 检测到空行直接退出循环
        if (country.isEmpty()){
            break;
        } 
            
        char firstChar = country.charAt(0);
        if (!Character.isUpperCase(firstChar)){
            System.out.println("Type with Capital Letter!");
        } else {
            countries.add(country);         
        } 
    }

    input.close();
    // 后续业务逻辑可在此处编写
}
补充说明
  • 修复后的交互逻辑完全匹配你的预期:输入日期后逐行录入国家名,首字母大写的名称会被正常存入集合,首字母不符合要求的会弹出提示,直接按回车键输入空行时会立刻终止输入循环。
  • 如果你希望把「输入多个空格后回车」的场景也识别为终止标记,可以把空行判断条件从country.isEmpty()换成country.isBlank()(该方法从Java 11版本开始提供,会自动忽略首尾空白字符后判断内容是否为空)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.11 16:16:23