Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在循环中的不同语句之间切换_Java_Loops - Fatal编程技术网

Java 如何在循环中的不同语句之间切换

Java 如何在循环中的不同语句之间切换,java,loops,Java,Loops,我想弄清楚如何在两件事情上做一个循环,例如,玩家,检查他们是否都是活动的,如果是,他们应该做不同的事情 它应该首先检查是否有赢家,如果没有,第一个玩家应该做他的动作,并检查他是否通过做那个动作赢了。在第一名球员完成动作但未获胜后,第二名球员应完成动作,当然,测试他是否获胜。如果还没有人赢,第一个玩家应该采取下一步行动,以此类推 这就是我现在的想法 boolean playerOne = true; boolean playerTwo = false; boolean haveWinner = f

我想弄清楚如何在两件事情上做一个循环,例如,玩家,检查他们是否都是活动的,如果是,他们应该做不同的事情

它应该首先检查是否有赢家,如果没有,第一个玩家应该做他的动作,并检查他是否通过做那个动作赢了。在第一名球员完成动作但未获胜后,第二名球员应完成动作,当然,测试他是否获胜。如果还没有人赢,第一个玩家应该采取下一步行动,以此类推

这就是我现在的想法

boolean playerOne = true;
boolean playerTwo = false;
boolean haveWinner = false;


while(haveWinner == false) {

    if (playerOne == true & playerTwo == false) {
        /*do something */
        playerOne = false;
        playerTwo = true;
    } else if (playerOne == false & playerTwo == true) {
        /* do something */
        playerOne = true;
        playerTwo = false;
    } else {
        System.out.println("No ones turn");
    }
}

我知道这样做是行不通的,因为第一个If请求是真的,而另一个If甚至都无法通过。但是我怎样才能使它基本上每次都切换?

您不需要
playerTwo
变量。只需切换
playeron
变量即可确定是否轮到玩家一(在这种情况下,轮到玩家二)

这使循环变得非常简单:

boolean playerOne = true;
boolean haveWinner = false;

while (!haveWinner) {   
    if (playerOne) {
        /*player one's turn - do something */
        playerOne = false;
    } else {
        /* player two's turn - do something */
        playerOne = true;
    }
}
或者您甚至可以使用以下命令保存一行代码:

boolean playerOne = true;
boolean haveWinner = false;

while (!haveWinner) {   
    if (playerOne) {
        /*player one's turn - do something */
    } else {
        /* player two's turn - do something */
    }
    playerOne = !playerOne;
}

您不需要
playerTwo
变量。只需切换
playeron
变量即可确定是否轮到玩家一(在这种情况下,轮到玩家二)

这使循环变得非常简单:

boolean playerOne = true;
boolean haveWinner = false;

while (!haveWinner) {   
    if (playerOne) {
        /*player one's turn - do something */
        playerOne = false;
    } else {
        /* player two's turn - do something */
        playerOne = true;
    }
}
或者您甚至可以使用以下命令保存一行代码:

boolean playerOne = true;
boolean haveWinner = false;

while (!haveWinner) {   
    if (playerOne) {
        /*player one's turn - do something */
    } else {
        /* player two's turn - do something */
    }
    playerOne = !playerOne;
}

这不是最漂亮的代码,但我不明白为什么这不起作用。Eran的回答显示了一种更好的方法。您还可以使用
switch()。这不是最漂亮的代码,但我不明白为什么这不起作用。Eran的回答显示了一种更好的方法。您还可以使用
switch()@迪恩。它在每次迭代结束时切换
playerne
的值。如果它是真的,它就会变成假的,反之亦然。我非常喜欢那个,看起来很干净。再次感谢。@DeanJ。它在每次迭代结束时切换
playerne
的值。如果它是真的,它就会变成假的,反之亦然。我非常喜欢那个,看起来很干净。再次感谢。