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

Java实现句子每个单词首字母大写代码未生效问题求助

Java实现单词首字母大写方案

原有代码存在的问题

  • 缺少java.io.BufferedReader类的导入语句,代码无法正常编译
  • 循环前提前调用了一次readLine(),会直接丢失输入的第一行内容
  • 转换逻辑仅对整行的第一个字符做大写处理,没有拆分识别单个单词,无法给句中其他单词的首字母做转换
  • 每行输出末尾额外拼接了多余空格,不符合输出格式要求
  • 没有做空行兼容处理,遇到空输入行时会触发字符串索引越界报错

修正后完整代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) throws IOException {
        InputStreamReader reader = new InputStreamReader(System.in, StandardCharsets.UTF_8);
        BufferedReader in = new BufferedReader(reader);
        String line;
        while ((line = in.readLine()) != null) {
            // 空行直接输出,避免索引越界
            if (line.isEmpty()) {
                System.out.println(line);
                continue;
            }
            char[] contentChars = line.toCharArray();
            // 行首字符默认大写
            contentChars[0] = Character.toUpperCase(contentChars[0]);
            // 遍历识别空格后的单词首字母
            for (int i = 1; i < contentChars.length; i++) {
                if (Character.isWhitespace(contentChars[i-1]) && !Character.isWhitespace(contentChars[i])) {
                    contentChars[i] = Character.toUpperCase(contentChars[i]);
                }
            }
            System.out.println(new String(contentChars));
        }
    }
}

逻辑说明

  • 补全所有缺失的依赖导入,代码可直接编译运行
  • 移除循环前无效的读行操作,保证所有输入行都能被正常处理
  • 基于字符数组逐位判断:行首字符默认转大写,后续只要检测到前一位是空格、当前位是有效字符,就将当前位转大写,自动覆盖所有单词的首字母位置,输入stack overflow时可正确输出Stack Overflow
  • 去掉多余的空格拼接逻辑,输出格式完全匹配要求
  • 增加空行判断,兼容空输入场景,不会触发运行时异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21