我写了一个方法,根据每个房间的床位是单人还是双人床,返回酒店的最大入住率。
public int calcOccupancy() {
int total = 0;
Room roomref;
Bed bedref;
for (int x = 0; x < room.size(); x++){
roomref = room.get(x);
for (int y = 0; y < roomref.numBeds(); y++){
bedref = roomref.getBed(y);
switch(bedref.bedNum()){
case 1: total = total + 2;
case 2: total = total + 1;
default:break;
}
}
}
return total;
}
当我调用这个方法时,我似乎得到了相当随机的值,尽管它们永远不会超出它们应有的范围。
任何人都能弄清楚我做错了什么。如果需要,我可以从项目中提供更多代码。
答案 0 :(得分:2)
您需要在语句结束后添加SYSNAME
:
break
否则case 1:
total = total + 2;
break;
case 2:
total = total + 1;
break;
将被分配&amp;重新分配&amp;结束了。
答案 1 :(得分:0)
如果你没有为每个case
添加break语句,你将会遇到下一个案例并且他们的代码将被执行:
如果匹配case
1,则会执行案例2的案例1 AND 的代码,结果会得到total + 3
。
像这样纠正:
switch(bedref.bedNum()){
case 1: total = total + 2;break;
case 2: total = total + 1;break;
default:break;
}
答案 2 :(得分:0)
你需要在案例1之后休息一下。休息一切似乎很好。
你的代码会发生什么,在执行到“case 1”之后,它不会从switch块中出来并执行“case 2”。