繁体   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