我很好奇为什么只读取while语句中的其中一个条件。我希望while语句中的两个条件都为true,以便while循环停止。我想&&意味着两个条件都必须为TRUE,但我的程序只读取while语句中首先达到的条件,然后在没有满足其他条件的情况下终止。我在这句话中做错了什么?
do
{
if((count%2)==0)
{ // even
charlestonFerry.setCurrentPort(startPort);
charlestonFerry.setDestPort(endPort);
FerryBoat.loadFromPort(homePort);
charlestonFerry.moveToPort(endPort);
}//End if
else
{ // odd
charlestonFerry.setCurrentPort(endPort);
charlestonFerry.setDestPort(startPort);
FerryBoat.loadFromPort(partyPort);
charlestonFerry.moveToPort(endPort);
}//End else
count++;
}while(homePort.getNumWaiting() > 0 && partyPort.getNumWaiting() > 0);
答案 0 :(得分:2)
是。 &&
表示条件必须为真(并且如果第一个测试为假,它会短路) - 这会产生false
。你想要||
。这意味着只要任一条件为真,它就会继续循环。
while(homePort.getNumWaiting() > 0 || partyPort.getNumWaiting() > 0);
答案 1 :(得分:0)
如前所述,您想使用 || 运算符,我还建议对代码结构进行一些改进。
不要在代码中添加注释,而是让代码自我记录。例如,将渡轮路线选择代码放在单独的方法 setFerryRoute 中。
您可以参考docs作为起点。
private void setFerryRoute() {
while (homePort.getNumWaiting() > 0 || partyPort.getNumWaiting() > 0) {
if (isPortCountEven(count)) {
charlestonFerry.setCurrentPort(startPort);
charlestonFerry.setDestPort(endPort);
FerryBoat.loadFromPort(homePort);
} else {
charlestonFerry.setCurrentPort(endPort);
charlestonFerry.setDestPort(startPort);
FerryBoat.loadFromPort(partyPort);
}
charlestonFerry.moveToPort(endPort);
count++;
}
}
// This function is not needed, I have created it just to give you
// another example for putting contextual information in your
// function, class and variable names.
private boolean isPortCountEven(int portCount) {
return (portCount % 2) == 0;
}
答案 2 :(得分:0)
如果要在两个条件都为真时中断循环,则使用以下条件:
while(!(homePort.getNumWaiting() > 0 && partyPort.getNumWaiting() > 0))