[英]my while loop doesn't finish even when the boolean became false how can i fix it?
我正在為一個有 2 個玩家輪流的游戲編寫代碼,但是即使在布爾值變為假的情況下,while 循環也會在某些情況下繼續運行。
這是有問題的while循環部分
while (stone>0)
// this should work only when the num of stones are bigger than 0
{
if(turn==2*n-1&&stone>0);
//if it's odd num turn, it's player1's turn
{
System.out.println(p1.getName()+"'s turn - remove how many? : ");
int remove = keyboard.nextInt();
s.setStone(remove);
stone = stone-s.removeStone();
System.out.print(stone+"stones left");
for (i=0;i<stone;i++)
System.out.print("*");
}
//printing asterisk mark to the num of stone left
System.out.println();
if(turn==2*n&&stone>0);
//if it's even num turn, it's player2's turn
{
System.out.println(p2.getName()+"'s turn - remove how many? : ");
int remove = keyboard.nextInt();
s.setStone(remove);
stone = stone-s.removeStone();
System.out.print(stone+"stones left");
for (i=0;i<stone;i++)
System.out.print("*");
}
System.out.println();
}
所以,我打算在剩下的石頭數量變成 0 時完成這個循環,當玩家 2 移除所有剩下的石頭時它起作用(它只打印 0 個石頭,僅此而已),但是當它是玩家 1,他移除了所有剩下的石頭時,然后有一個錯誤,比如打印“剩下 0 個石頭”然后“輪到玩家 2 - 刪除多少?” '
我寫了 while - 循環以在石頭數變為 0 時完成,但是當玩家 1 變為 0 時,循環不會完成並讓玩家 b 再轉一圈並使石頭數量為負。
你可以添加:
if(!(stone > 0))
break;
在你的 while 循環結束時。 這樣,當您在循環結束時沒有任何石頭時,它應該停止。
你的問題是
if(turn==2*n-1&&stone>0);
和
if(turn==2*n&&stone>0);
是空的 if 語句(意思是:如果條件為真,則什么都不做)。
這些行末尾的分號是空語句 - 因此始終執行以下塊(您詢問每個玩家要移除多少塊石頭)。
刪除這兩個分號,您不需要更改代碼的其余部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.