You need to enable JavaScript to run this app. 使用Java HashMap统计字符串"Hello"字符出现次数时所有字符计数均为2的问题求助
优惠活动
大模型
产品
解决方案
定价
更多

使用Java HashMap统计字符串"Hello"字符出现次数时所有字符计数均为2的问题求助

原代码运行异常的核心原因
  • 频次计数逻辑完全硬编码:occurence变量全程固定值为1,从未读取HashMap中已存储的字符计数,所有累加操作都是基于固定值1计算,最终所有字符的计数都会卡在2,和实际出现次数完全脱钩,也就是你运行后看到全为2的直接原因
  • 冗余嵌套循环:内层基于j的循环没有任何实际作用,反复执行同一个存在性判断,既浪费性能也会打乱正常的计数逻辑
  • 流程顺序错误:每次遍历字符时,第一时间就将当前字符以计数1写入HashMap,不管该字符之前是否出现过,直接覆盖已有的统计值
  • 无意义冗余代码:提前初始化的char[] array从头到尾没有被调用,遍历阶段反而反复通过hello.charAt(i)取字符,属于完全多余的代码段
修正后的可运行实现
String hello = "Hello";
HashMap<Character, Integer> hashMap = new HashMap<>();

for (char c : hello.toCharArray()) {
    // 若字符已存在则取出原有计数+1,不存在则默认从0开始计算,得到真实出现次数
    hashMap.put(c, hashMap.getOrDefault(c, 0) + 1);
}
System.out.println(hashMap);

运行代码后的输出结果为 {H=1, e=1, l=2, o=1},完全匹配字符串字符频次统计的预期目标。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 13:06:05