Java:一会儿做,不会

问题描述

|
    Anfallare.armees = 10;
    Forsvarare.armees = 10;
 do{
    Anfallare.slaTarningar();
    Forsvarare.slaTarningar();

    Anfallare.visaTarningar();
    Forsvarare.visaTarningar();

    MotVarandra(Anfallare,Forsvarare);

    status(Anfallare,Forsvarare);

    }while(Anfallare.armees == 0 || Forsvarare.armees == 0);
是我所拥有的,我也尝试过
 System.out.println(Anfallare.armees + \" :: \" + Forsvarare.armees);
在这之后,它是9和10,它们都不是0。 为什么要运行一次?     

解决方法

while(Anfallare.armees == 0 || Forsvarare.armees == 0)
仅在
Anfallare.armees == 0 || Forsvarare.armees == 0
时才继续。在您的示例中,两个都不为0,因此不会循环。
while(Anfallare.armees != 0 && Forsvarare.armees != 0)
意思是,如果两者均为零(stop5ѭ),则停止循环 您实际上可能想要:
while (Anfallare.armees != 0 || Forsvarare.armees != 0)
表示如果两者均为0,则停止循环     ,如您所指出的,因为在第一次运行后,Anfallare.armees为9,不等于0,而Forsvarare.armees为10,不等于0。 也许你是说
while(Anfallare.armees != 0 && Forsvarare.armees != 0)
    ,你需要做
while(Anfallare.armees != 0 || Forsvarare.armees != 0);
使它循环直到两个变量都为0     ,因为您以
do{}
开始,这迫使至少执行一次代码,然后才有
x==0
,但这是不正确的。由于不正确,因此循环结束。 正如您在其他答案中看到的那样,您可能需要检查
x != 0
(不等于),甚至更好的
x>0
(如果x可能取负数) 花一些时间阅读我在另一个答案中链接到的Oracle的Java教程。它很好地解释了循环逻辑。     ,如果我对您的理解正确,您的ѭ13body循环主体将执行一次,但是您认为它根本不应该运行-这对吗? 原因是,在执行期间,仅在执行循环主体之后才检查循环条件。即它将始终至少运行一次。     ,没有完整的代码很难说,但可能只是您需要反转条件:
}while(!(Anfallare.armees == 0 || Forsvarare.armees == 0));
    ,您的条件是
... as long as one of them is 0
。您想要的是:
while(Anfallare.armees > 0 || Forsvarare.armees > 0);
    ,原因很简单 当表达式为真时,while循环。 所以你想要的是
while(Anfallare.armees != 0 || Forsvarare.armees != 0);
但更好的是我建议
while(Anfallare.armees > 0 || Forsvarare.armees > 0);
这将使您确定自己的参军人数永远不会为负^^ 杰森     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...