为了账号安全,请及时绑定邮箱和手机立即绑定

帮忙看下这段代码

帮忙看下这段代码

慕容9145150 2018-04-16 20:44:30
public class test19 { public static void main(String[] args) { HashMap<Character, Integer> hm = new HashMap<>(); ArrayList<String> list = new ArrayList<>(); Collections.addAll(list, "abc", "bcd"); //int count =1; // int count2 = 0; for (String s : list) { char[] ch = s.toCharArray(); for (char c : ch) { if (!hm.containsKey(c)) { hm.put(c, 1);//hm.put(c,count); } else { hm.put(c, hm.get(c) + 1);//count2 = hm.get(c) + 1; }                            //hm.put(c, count2); } } //System.out.println(hm); Set<Entry<Character, Integer>> entry = hm.entrySet(); for (Entry<Character, Integer> e : entry) { char c = e.getKey(); int a = e.getValue(); System.out.println("字符" + c + "出现了" + a + "次"); } }}这段代码主要是求字符串中的字符出现的次数,代码中被注释掉的部分是我之前写的,不明白为什么改成注释掉的代码程序运行出现的次数就是不对的,而按照现在这样做就是正确的。按照初学者的我看来都是一样,请各位大神指教一下谢谢。。。
查看完整描述

1 回答

已采纳
?
半枯

TA贡献101条经验 获得超45个赞

我认为问题出在

hm.put(c, hm.get(c) + 1);//count2 = hm.get(c) + 1;
}                            //hm.put(c, count2);

它的是

hm.get(c) + 1

不是

hm.get(c) ++

而你的

count2 = hm.get(c) + 1;

意思是

hm.get(c)++


查看完整回答
1 反对 回复 2018-04-17
  • 半枯
    半枯
    它用+1只是改变这一次,如果用了++一次就够了,就不用在循环里每一次都+1,
  • 1 回答
  • 0 关注
  • 903 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信