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。
为什么它会运行一次?
答案 0 :(得分:7)
因为,正如你所指出的,在第一次运行之后,Anfallare.armees是9,它不等于0,而Forsvarare.armees是10,它不等于0.
也许你的意思是
while(Anfallare.armees != 0 && Forsvarare.armees != 0)
答案 1 :(得分:4)
while(Anfallare.armees == 0 || Forsvarare.armees == 0)
仅在Anfallare.armees == 0 || Forsvarare.armees == 0
时才会继续。在你的例子中,两者都不是0因此它不会循环。
while(Anfallare.armees != 0 && Forsvarare.armees != 0)
意味着,如果其中任何一个为零(Anfallare.armees != 0 && Forsvarare.armees != 0
)
你可能真的想要:
while (Anfallare.armees != 0 || Forsvarare.armees != 0)
表示如果两者都为0
则停止循环答案 2 :(得分:3)
你需要做
while(Anfallare.armees != 0 || Forsvarare.armees != 0);
使其循环,直到这两个变量都为0
答案 3 :(得分:2)
因为你从do{}
开始,强制至少执行一次代码,然后你有x==0
,这不是真的。由于不是这样,循环结束。
正如您在其他答案中看到的那样,您可能需要检查x != 0
(不等于),甚至更好x>0
(如果x可能采取负数)
花一些时间阅读我在the other answer to you中链接的Oracle Java教程。它很好地解释了循环逻辑。
答案 4 :(得分:2)
如果我理解正确,你的do-while
循环体会被执行一次,但你认为它根本不应该运行 - 这是正确的吗?
原因是,在执行循环体之后,仅在之后检查循环条件。即它总是至少运行一次。
答案 5 :(得分:1)
没有完整的代码很难分辨,但可能只需要反转条件:
}while(!(Anfallare.armees == 0 || Forsvarare.armees == 0));
答案 6 :(得分:1)
你的条件是... as long as one of them is 0
。你想要的是这个:
while(Anfallare.armees > 0 || Forsvarare.armees > 0);
答案 7 :(得分:1)
原因很简单
当表达式为真时,while循环。
所以你想要的是
while(Anfallare.armees != 0 || Forsvarare.armees != 0);
但我会建议
更好while(Anfallare.armees > 0 || Forsvarare.armees > 0);
这将使您确保您的armee计数永远不会消极^^
杰森