簡體   English   中英

即使布爾值變為假,我的 while 循環也沒有完成我該如何解決?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM