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

Java代码while循环无法在用户输入q时终止该怎么解决?

问题根因分析

  • 第一个输入校验循环未优先判断输入是否为q,若用户首次输入直接是q,会被卡在无逗号报错循环中无法退出
  • 内层输入校验的循环条件逻辑完全错误:原条件name.contains(",") == false && name.equalsIgnoreCase("q")表示「输入无逗号且是q」时才触发报错重输,会导致输入q后直接卡在内层死循环
  • 冗余的if(name.compareTo("q") == 1)判断无实际作用:输入为q时compareTo返回值为0,永远触发不了break逻辑
  • 第二层循环的判断条件重复冗余:!name.equals("q") && !name.equalsIgnoreCase("q")属于重复判断,equalsIgnoreCase已经覆盖了大小写q的场景

修正方案

修改要点

  1. 所有读取用户输入后的逻辑,优先判断是否为q,匹配直接终止流程
  2. 修正内层校验条件:只有当输入不是q且没有逗号时,才触发无逗号报错
  3. 调整第一个校验循环逻辑,增加q的判断分支
  4. 移除无用的冗余判断代码

修正后完整代码

import java.util.Scanner;
public class ParseStrings {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter input string:");
        String name = sc.nextLine();

        // 第一个校验循环增加q判断
        while(!name.equalsIgnoreCase("q") && !name.contains(",")) {
            System.out.println("Error: No comma in string.");
            System.out.println("Enter input string:");
            name = sc.nextLine();
        }

        // 简化循环条件,只要不是q就进入处理
        while(!name.equalsIgnoreCase("q")) {
            String[] splitting = name.split(",");
            String first;
            String second;
            
            if(splitting[1].contains(" ")) {
                first = splitting[0];
                second = splitting[1].substring(splitting[1].indexOf(' ') + 1);
            }
            else {
                first = splitting[0];
                second = splitting[1];
            }

            System.out.println("First word: " + first);
            System.out.println("Second word: " + second);

            System.out.println("Enter input string:");
            name = sc.nextLine();
            // 修正内层校验逻辑:不是q且无逗号才报错重输
            while(!name.equalsIgnoreCase("q") && !name.contains(",")) {
                System.out.println("Error: No comma in string.");
                System.out.println("Enter input string:");
                name = sc.nextLine();
            }
        }
        
        System.out.println("Thank you!");
        sc.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:03