IF语句不执行,但ELSE IF语句正常工作
问题描述:
我一直在学习Java,并且正在开发一个简单的Tic-Tac-Toe游戏。我相信我已经得到了一切正常工作,除了IF语句没有执行。所以当玩家连续或对角地获得三个X时,IF语句不会执行。然而,无论何时玩家配对或得到三个O,ELSE IF语句都可以正常工作。任何帮助将非常感激!IF语句不执行,但ELSE IF语句正常工作
public static void check_status()
{
if ( (board[0][0]=='X' && board[0][1]=='X' && board[0][2]=='x') ||
(board[1][0]=='X' && board[1][1]=='X' && board[1][2]=='x') ||
(board[2][0]=='X' && board[2][1]=='X' && board[2][2]=='x') ||
(board[0][0]=='X' && board[1][0]=='X' && board[2][0]=='x') ||
(board[0][1]=='X' && board[1][1]=='X' && board[2][1]=='x') ||
(board[0][2]=='X' && board[1][2]=='X' && board[2][2]=='x') ||
(board[0][0]=='X' && board[1][1]=='X' && board[2][2]=='x') ||
(board[0][2]=='X' && board[1][1]=='X' && board[2][0]=='x'))
{
System.out.println();
System.out.println("X wins the game!");
end_game = 1;
}
else if ( (board[0][0]=='O' && board[0][1]=='O' && board[0][2]=='O') ||
(board[1][0]=='O' && board[1][1]=='O' && board[1][2]=='O') ||
(board[2][0]=='O' && board[2][1]=='O' && board[2][2]=='O') ||
(board[0][0]=='O' && board[1][0]=='O' && board[2][0]=='O') ||
(board[0][1]=='O' && board[1][1]=='O' && board[2][1]=='O') ||
(board[0][2]=='O' && board[1][2]=='O' && board[2][2]=='O') ||
(board[0][0]=='O' && board[1][1]=='O' && board[2][2]=='O') ||
(board[0][2]=='O' && board[1][1]=='O' && board[2][0]=='O'))
{
System.out.println();
System.out.println("O wins the game!");
end_game = 1;
}
else if ( (board[0][0]!=' ' && board[0][1]!=' ' && board[0][2]!=' ') &&
(board[1][0]!=' ' && board[1][1]!=' ' && board[1][2]!=' ') &&
(board[2][0]!=' ' && board[2][1]!=' ' && board[2][2]!=' '))
{
System.out.println();
System.out.println("The game is a tie.");
end_game = 1;
}
}
此外,这是我第一次发布堆栈溢出所以道歉,如果问题或格式不合适。
全码:
import java.util.Scanner;
public class TicTacToe
{
private static char[][] board = new char[3][3];
private static int end_game = 0;
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
initBoard();
displayBoard();
do
{
System.out.println();
System.out.print("\'O\', choose your location (row, column): ");
int O_row = keyboard.nextInt();
int O_col = keyboard.nextInt();
board[O_row][O_col] = 'O';
System.out.println();
displayBoard();
check_status();
if (end_game==1){
break;
}
System.out.println();
System.out.print("\'X\', choose your location (row, column): ");
int X_row = keyboard.nextInt();
int X_col = keyboard.nextInt();
board[X_row][X_col] = 'X';
System.out.println();
displayBoard();
check_status();
} while (end_game==0);
}
public static void check_status()
{
if ( (board[0][0]=='X' && board[0][1]=='X' && board[0][2]=='x') ||
(board[1][0]=='X' && board[1][1]=='X' && board[1][2]=='x') ||
(board[2][0]=='X' && board[2][1]=='X' && board[2][2]=='x') ||
(board[0][0]=='X' && board[1][0]=='X' && board[2][0]=='x') ||
(board[0][1]=='X' && board[1][1]=='X' && board[2][1]=='x') ||
(board[0][2]=='X' && board[1][2]=='X' && board[2][2]=='x') ||
(board[0][0]=='X' && board[1][1]=='X' && board[2][2]=='x') ||
(board[0][2]=='X' && board[1][1]=='X' && board[2][0]=='x'))
{
System.out.println();
System.out.println("X wins the game!");
end_game = 1;
}
else if ( (board[0][0]=='O' && board[0][1]=='O' && board[0][2]=='O') ||
(board[1][0]=='O' && board[1][1]=='O' && board[1][2]=='O') ||
(board[2][0]=='O' && board[2][1]=='O' && board[2][2]=='O') ||
(board[0][0]=='O' && board[1][0]=='O' && board[2][0]=='O') ||
(board[0][1]=='O' && board[1][1]=='O' && board[2][1]=='O') ||
(board[0][2]=='O' && board[1][2]=='O' && board[2][2]=='O') ||
(board[0][0]=='O' && board[1][1]=='O' && board[2][2]=='O') ||
(board[0][2]=='O' && board[1][1]=='O' && board[2][0]=='O'))
{
System.out.println();
System.out.println("O wins the game!");
end_game = 1;
}
else if ( (board[0][0]!=' ' && board[0][1]!=' ' && board[0][2]!=' ') &&
(board[1][0]!=' ' && board[1][1]!=' ' && board[1][2]!=' ') &&
(board[2][0]!=' ' && board[2][1]!=' ' && board[2][2]!=' '))
{
System.out.println();
System.out.println("The game is a tie.");
end_game = 1;
}
}
public static void initBoard()
{
// fills up the board with blanks
for (int r=0; r<3; r++)
for (int c=0; c<3; c++)
board[r][c] = ' ';
}
public static void displayBoard()
{
System.out.println(" 0 " + board[0][0] + "|" + board[0][1] + "|" + board[0][2]);
System.out.println(" --+-+--");
System.out.println(" 1 " + board[1][0] + "|" + board[1][1] + "|" + board[1][2]);
System.out.println(" --+-+--");
System.out.println(" 2 " + board[2][0] + "|" + board[2][1] + "|" + board[2][2]);
System.out.println(" 0 1 2 ");
}
}
答
你应该请查看您在代码中使用的X
和x
。字符区分大小写。
您在AND的最后部分中是否有意使用小型“x”字符? – padde 2014-10-10 07:53:29