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

Java实现字符串每个单词首字母大写功能测试用例不通过问题排查

问题代码错误原因定位
  • 错误1:未做空输入校验,当传入空字符串""或者null时,代码第一行调用s.charAt(0)会直接抛出StringIndexOutOfBoundsException异常。
  • 错误2:未处理字符串末尾带空格的场景,比如输入"hello world ",当循环走到最后一个空格下标时,执行s.charAt(i+1)会超出字符串长度范围,触发下标越界异常。
  • 错误3:连续多空格分隔单词的场景处理异常,比如输入"i love java"(两个空格分隔i和love)、开头有多个空格的输入,原有跳下标逻辑会丢失单词首字母大写的转换规则,甚至触发越界问题。
修复后代码
class Solution {
    public String transform(String s) {
        // 优先处理异常输入
        if (s == null || s.length() == 0) {
            return s;
        }
        StringBuilder res = new StringBuilder();
        // 标记下一个非空格字符是否需要转大写,首字符默认需要转大写
        boolean nextUpperCase = true;
        for (char c : s.toCharArray()) {
            if (c == ' ') {
                res.append(c);
                nextUpperCase = true;
            } else {
                if (nextUpperCase) {
                    res.append(Character.toUpperCase(c));
                    nextUpperCase = false;
                } else {
                    res.append(c);
                }
            }
        }
        return res.toString();
    }
}

修复逻辑采用标记位替代原有的直接跳下标操作,完全规避越界风险,同时兼容空输入、首尾空格、多空格分隔的所有场景,原有可通过的单空格分隔测试用例也能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:15:03