Java:虽然不会

时间:2011-05-25 21:32:25

标签: 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。

为什么它会运行一次?

8 个答案:

答案 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计数永远不会消极^^

杰森