2009年8月20日星期四

[Bug]今天遇到的一个JAVA问题!

今天调一个问题调了半天,一直都没有搞懂怎么会有错呢?代码如下:

for (Room r:RoomMap.roomList) {
System.out.println("for started");
if (name.equals(r.getRoomName())) {
// TODO 让房间内的用户强行退出房间(可选)
// 关闭房间
r.clear();
r.setOpen(false);
RoomMap.roomList.remove(r);
}
System.out.println("if closed");
}
System.out.println("for closed");

粗略一看,没有任何问题!一个循环判断而已嘛!name是一个String,Room是一个类代表一个房间。

但运行时候总是有错,而且只能运行到System.out.println("if closed");再往下的System.out.println("for closed");则打印不出。十分诡异!

解决方法是:在RoomMap.roomList.remove(r);后面加break;

但我还是不明白为什么?

没有评论: