输入三行三列数字,例如:
0 0 0
1 0 0
0 0 1
其中,0代表O,1代表X。代码运行逻辑: 检查行 --> 检查列 --> 检查对角线 --> 检查反对角线
输出 棋局结果【1(X) is winner .】、【0(O) is winner .】、【平局 !】。
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
try {
Scanner in = new Scanner(System.in);
int [][] board = new int[3][3];
for(int i = 0; i < board.length; i++) {//读入
for(int j = 0; j < board[i].length; j++) {
board[i][j] = in.nextInt();
}
}
int flag = -1; //-1: 平局; 1: (X)胜利; 0: (O)胜
int num1 = 0; //1的数量 1代表X
int num0 = 0; //0的数量 0代表O
for(int i = 0; i < board.length; i++) { //检查行
if(flag == -1) { //平局 --> 继续验证
for(int j = 0; j < board[i].length; j++) {
if(board[i][j] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
break;
} else {
flag = 0;
System.out.println("0(O) is winner .");
break;
}
} else {
flag = -1;
break;
}
}
}
if(flag == -1) { //检查列: 平局 --> 继续验证
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(flag == -1) {
for(int j = 0; j < 3; j++) {
if(board[j][i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
break;
} else {
flag = 0;
System.out.println("0(O) is winner .");
break;
}
} else {
flag = -1;
break;
}
}
}
}
if(flag == -1) { //检查对角线: 平局 --> 继续验证
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(board[i][i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
} else {
flag = 0;
System.out.println("0(O) is winner .");
}
} else {
flag = -1;
}
}
if(flag == -1) { //检查反对角线: 平局 --> 继续验证
num1 = 0;
num0 = 0;
for(int i = 0; i < 3; i++) {
if(board[i][2-i] == 1) {
num1++;
} else {
num0++;
}
}
if(num1 == 3 || num0 == 3) {
if(num1 == 3) {
flag = 1;
System.out.println("1(X) is winner .");
} else {
flag = 0;
System.out.println("0(O) is winner .");
}
} else {
flag = -1;
}
}
if(flag == -1) {
System.out.println("平局 !");
}
} catch(Exception e){
System.out.println("程序异常 !");
}
}
}
/**
检查行:
1 1 1
0 1 0
0 0 1
1(X) is winner .
0 0 0
1 0 0
0 0 1
0(O) is winner .
平局:
0 1 0
0 1 1
1 0 1
检查对角线:
1 0 0
0 1 0
0 0 1
1(X)胜利:
try {
} catch(Exception e){
}
*/