2011-05-25 50 views
0
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); 

是我,我也嘗試了的Java:做而不會同時

System.out.println(Anfallare.armees + " :: " + Forsvarare.armees); 

在此之後做一段時間,它是10和10,他們都不是0

爲什麼它運行一次嗎?

回答

4
while(Anfallare.armees == 0 || Forsvarare.armees == 0) 

只有在Anfallare.armees == 0 || Forsvarare.armees == 0的情況下才會繼續。在你的例子中,既不是0,也不會循環。

while(Anfallare.armees != 0 && Forsvarare.armees != 0) 

手段,停止循環,如果都是0(Anfallare.armees != 0 && Forsvarare.armees != 0

你實際上可能想:

while (Anfallare.armees != 0 || Forsvarare.armees != 0) 

手段,停止循環,如果兩者都是0

7

因爲,正如你所指出,在第一次運行後,Anfallare.armees是9,它不等於0,和Forsvarare.armees是10,這是不等於0

也許你意

while(Anfallare.armees != 0 && Forsvarare.armees != 0) 
1

很難說沒有完整的代碼,但它可能是你只需要反轉的條件:

}while(!(Anfallare.armees == 0 || Forsvarare.armees == 0)); 
3

你需要做的

while(Anfallare.armees != 0 || Forsvarare.armees != 0); 

要使其循環,直到這兩個變量都是0

2

因爲你開始爲do{},強制執行至少一次的代碼,然後你必須同時x==0,這是不正確的。由於它不是真的,循環結束。

正如你在其他的答案看,你可能需要檢查x != 0(不等於),甚至更好x>0(在事件X可以採取一個負數)

花一些時間來閱讀我在the other answer to you中鏈接了Oracle的Java教程。它很好地解釋了循環邏輯。

1

您的條件說... as long as one of them is 0。你會希望是這樣的:

while(Anfallare.armees > 0 || Forsvarare.armees > 0); 
2

如果我理解正確的話,你的do-while循環體被執行一次,但你認爲它不應該運行在所有 - 這是正確的?

原因是,在do-while循環條件只被檢查循環體被執行。即它將始終運行至少一次。

1

的原因是簡單

while循環表達式爲true時。

所以你想要的是

while(Anfallare.armees != 0 || Forsvarare.armees != 0); 

但更重要的,我建議

while(Anfallare.armees > 0 || Forsvarare.armees > 0); 

這將允許您以確保您的集團軍數量從來沒有得到負^^

賈森