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