簡體   English   中英

我的循環再運行一遍,我看不出為什么

[英]My loop is running one extra time and I can't see why

我有一個剪刀石頭布游戲,該游戲應該一直運行,直到一名玩家獲得4連勝。 一切似乎都可以正常運行,但是當一名玩家獲得了連續4場勝利時,游戲就會多運行一次,我不知道為什么。

//當聲明

while(!done){       
    done=play1Win.consecutiveWins==4||play2Win.consecutiveWins==4;
    player1Roll=random();
    player2Roll=random();

//這個草稿都在循環中,但是我只會張貼它的一部分。 全部都是一樣

        if(player1Roll==SCISSORS&&player2Roll==PAPER){
        System.out.println("Scissors beats Paper! Player 1 wins");      
        lastWinner=PLAYER1;

        if (lastWinner==PLAYER1){
        play1Win.consecutiveWins++;
        play2Win.consecutiveWins=0;
        }
    }
    if(player1Roll==PAPER&&player2Roll==ROCK){
        System.out.println("Paper beats Rock! Player 1 wins");      
        lastWinner=PLAYER1;

        if (lastWinner==PLAYER1){
        play1Win.consecutiveWins++;
        play2Win.consecutiveWins=0;
        }

//這是循環的盡頭

      System.out.println("Player 1 wins- " +play1Win.consecutiveWins );  
      System.out.println("Player 2 wins- " +play2Win.consecutiveWins);

輸出是這樣的:

    Paper beats Rock! Player 2 wins
    Player 1 wins- 0
    Player 2 wins- 1
    Paper beats Spock! Player 2 wins
    Player 1 wins- 0
    Player 2 wins- 2
    Rock beats Scissors! Player 2 wins
    Player 1 wins- 0
    Player 2 wins- 3
    Rock beats Scissors! Player 2 wins
    Player 1 wins- 0
    Player 2 wins- 4     // SHOULD STOP HERE
    Paper beats Rock! Player 1 wins    
    Player 1 wins- 1
    Player 2 wins- 0

如果有人能指出我正確的方向,那就太好了。 謝謝!

您應該將此行放在while循環的最后一行

done=play1Win.consecutiveWins==4||play2Win.consecutiveWins==4;

您可以在循環開始時設置完成條件。 這意味着即使player2連續獲得了4次勝利,在下一個循環開始之前,done都不會設置為true。 將此行移到while循環的末尾:

  done=play1Win.consecutiveWins==4||play2Win.consecutiveWins==4;

要在連續四次獲勝后立即關閉循環,應在循環結束時而不是在NEXT循環開始時檢查退出標准。 如果您在循環開始時檢查退出條件,則將其作為您的一部分,就像重寫while (!done){...}

while(play1Win.consecutiveWins==4||play2Win.consecutiveWins==4){ ... }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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