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

Java读取段落至EOF统计单词数代码输出不符合预期问题

Java单词统计代码问题修复

原有代码错误点

  • 重复读取行:while循环条件中已经调用br.readLine()读取了一行存入str,循环体中又调用一次该方法,会导致一半的行被丢弃,且当输入总行数为奇数时会出现空指针异常
  • 索引越界风险:for循环遍历到str.length()-1就需要停止,原代码写的是i < str.length(),当i指向最后一个字符时访问str.charAt(i+1)会触发数组越界
  • 计数逻辑错误:
    1. 初始值wordCount = 1不合理,空输入会错误返回1
    2. 未处理行首空格、连续多空格、行尾空格的边界情况,会导致计数不准
    3. 没有给每行的第一个单词做计数适配
  • 输出位置错误:打印语句放在while循环内部,每处理一行就输出一次中间值,而非全部输入处理完成后输出最终结果

修复后代码

import java.io.*;

public class CountWords {
    public static void main (String[] args) throws IOException {
        InputStreamReader r = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(r);

        int wordCount = 0;
        String str;
        while ((str = br.readLine()) != null) {
            // 按空白字符分割,过滤连续空格、行首尾空格产生的空结果
            String[] words = str.trim().split("\\s+");
            // 排除空行的计数
            if (!str.trim().isEmpty()) {
                wordCount += words.length;
            }
        }
        System.out.println(wordCount);
    }
}

针对给出的样例输入,运行上述代码可得到预期输出36。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:09