我正在写一个井字棋问题。
TicTacToe
类工作正常,但我的主类中的第一个 if 语句未处理。 TicTacToe
类并不是问题所在,因为当玩家 1 获胜时,oNew.checkWinner(1)
返回 true。 (我通过在 if 语句之前放置 System.out.println(oNew.checkWinner(1));
进行检查)。
但是它不会传递到 if 语句来中断 while 循环,而是继续执行。它与第一个 else if 的作用相同。
奇怪的是,它对于第二个 if 语句和第二个 else if 语句运行得很好。
public static void main(String[] args) {
TicTacToe oNew = new TicTacToe();
String champ = "";
boolean hasWon = false;
oNew.getMove();
while(hasWon == false){
oNew.setMove(1);
oNew.getMove();
if (oNew.checkWinner(1) == true){
champ = "Player 1 wins.";
hasWon = true;
}
else if(oNew.checkCatsGame() == true){
champ = "Draw";
hasWon = true;
}
oNew.setMove(2);
oNew.getMove();
if (oNew.checkWinner(2) == true){
champ = "Player 2 wins.";
hasWon = true;
}
else if(oNew.checkCatsGame() == true){
champ = "Draw";
hasWon = true;
}
}
System.out.println(champ);
}
最佳答案
为了在其中一个条件为真时离开循环,请添加 break
或 continue
(如果不这样做,则添加第一个 if- 后面的语句) else-if block 在当前循环迭代结束并再次检查循环条件之前执行):
if (oNew.checkWinner(1)){
champ = "Player 1 wins.";
hasWon = true;
continue;
}
else if(oNew.checkCatsGame()){
champ = "Draw";
hasWon = true;
continue;
}
继续将结束当前迭代,一旦测试下一次迭代的条件,就会退出 while 循环。
无论
hasWon
的值如何,break 都会终止循环。
关于java - If 语句未处理 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33995918/