为啥加入了一行结果完全不同?

xindy 2002-07-22 03:38:18
程序内容如下:

import java.util.*;

class Counter {
int i = 1;
public String toString() {
return Integer.toString(i);
}
}

public class Statistics {
public static void main(String[] args) {
HashMap hm = new HashMap();
for(int i = 0; i < 10000; i++) {
// Produce a number between 0 and 20:
Integer r =
new Integer((int)(Math.random() * 20));
if(hm.containsKey(r))
((Counter)hm.get(r)).i++;
else
hm.put(r, new Counter());
}
System.out.println(hm);
}
} ///:~

我在else后面 hm.put(r, new Counter());语句前面加入了
System.out.println(r);
显示的结果就完全不同了,为什么?
...全文
34 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xindy 2002-07-22
  • 打赏
  • 举报
回复
谢谢大家,我真糊涂。
arefe 2002-07-22
  • 打赏
  • 举报
回复
不会是没有注意加大括号吧?
不然好象没其他理由了嘛!
wangchq 2002-07-22
  • 打赏
  • 举报
回复
你的if,else关键字后面没有{},所以java默认的是去执行他们后面的第一行代吗
改成这样就行了:

if(hm.containsKey(r)){
((Counter)hm.get(r)).i++;
}
else{
System.out.println(r);
hm.put(r, new Counter());
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧