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

Java字符串解析程序求助:已修复退出逻辑仍存在空格异常

Java字符串解析:修复空格异常与退出逻辑问题

问题分析

你的代码存在两个核心问题:

  • 退出逻辑完全失效:userInput.equalsIgnoreCase("q")的判断被放在最后一个else if分支,但前面的contains(",")和!contains(",")已经覆盖了所有输入场景,导致退出指令永远不会被触发。
  • 输出空格异常:
    • 输出格式不一致:"First word: "带两个空格,"Second word:"无空格,导致内容对齐混乱。
    • 输入中逗号前后的空格会被保留在split结果里,比如输入"hello, world"时,第二个输出会是" world"(带前置空格)。
    • 重复调用split(","),既冗余又影响效率。

修复后的代码

import java.util.Scanner;

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

        while (true) {
            System.out.println("Enter input string: ");
            String userInput = scan.nextLine();

            // 优先处理退出请求
            if (userInput.equalsIgnoreCase("q")) {
                break;
            }

            if (userInput.contains(",")) {
                // 只调用一次split,结果存入数组
                String[] parts = userInput.split(",");
                // 用trim()去除前后空格,统一输出格式
                System.out.println("First word: " + parts[0].trim());
                System.out.println("Second word: " + parts[1].trim());
                System.out.println();
            } else {
                System.out.println("Error: No comma in string");
            }
        }
    }
}

关键修改说明

  1. 调整退出逻辑顺序:将退出判断移到循环最开始,确保用户输入q或Q时能直接退出程序。
  2. 优化split调用:只执行一次split(",")并将结果存入数组,避免重复解析字符串。
  3. 去除冗余空格:对split后的每个部分调用trim(),自动清除输入中逗号前后的空格(包括空格、制表符等空白字符)。
  4. 统一输出格式:将"First word"和"Second word"后的空格统一为1个,保证输出对齐美观。
  5. 简化分支结构:去掉多余的else if (!userInput.contains(",")),直接用else承接无逗号的情况,逻辑更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:25:15