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

Java按>>分割字符串遍历校验分段首词输出异常排查

代码问题排查

现有实现存在4个核心逻辑错误,直接导致运行结果不符合预期:

  • 遍历逻辑失效:for循环中始终访问数组下标为0的第一个元素stringArr[0],没有使用循环变量i访问当前遍历到的分段,后续拆分出的内容完全没被处理
  • 字符串匹配逻辑错误:拆分后的非首段内容前自带空格(比如>>tv 4 2345拆分后得到的分段是 tv 4 2345,开头带空格),直接用equals匹配radio/tv永远无法命中;且需求是校验分段的首个单词,不是判断整个分段内容是否完全等于关键词
  • 空分段未过滤:输入末尾带>>时,split操作会生成一个空字符串的尾元素,会直接走到else分支输出无效提示
  • 输出逻辑错误:仅在整个循环结束后打印一次ask变量值,预期是每个分段校验完成后立即输出对应结果,循环中反复覆盖ask值最终只能拿到最后一次的赋值结果
修复后代码
import java.util.Scanner;

public class MediaCheck {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String[] segments = line.split(">>");
        
        for (String segment : segments) {
            // 去除分段前后空白,跳过末尾>>生成的空分段
            String trimmedSeg = segment.trim();
            if (trimmedSeg.isEmpty()) {
                continue;
            }
            // 提取分段首个单词
            String firstWord = trimmedSeg.split("\\s+")[0];
            if ("radio".equals(firstWord)) {
                System.out.println(10);
            } else if ("tv".equals(firstWord)) {
                System.out.println(15);
            } else {
                System.out.println("Invalid media.");
            }
        }
        scanner.close();
    }
}
运行效果

输入测试用例radio 3 7210>>tv 4 2345>>radio 9 31000>>时,程序输出如下,完全匹配预期:

10
15
10

如果分段首个单词不是radio或tv,会逐段输出Invalid media.,末尾的空分段会被自动跳过不会触发错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:12:26