

求解代码
java
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer in = new StringTokenizer(br.readLine());
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(in.nextToken());
for (int i = 0; i < t; i++) {
char[][] board = new char[3][3];
for (int j = 0; j < 3; j++) {
String s = br.readLine().trim();
board[j] = s.toCharArray();
}
boolean redEat = hasEat(board, '*');
boolean purpleEat = hasEat(board, 'o');
if (redEat && !purpleEat) {
out.println("yukari");
} else if (!redEat && purpleEat) {
out.println("kou");
} else {
out.println("draw");
}
}
out.flush();
out.close();
br.close();
}
private static boolean hasEat(char[][] board, char piece) {
char opponent = (piece == '*') ? 'o' : '*';
//遍历 3 行(行索引 0-2),
// 仅检查 "该行中间列(索引 1)是己方棋子,
// 左右列(索引 0、2)全是对方棋子"
for (int row = 0; row < 3; row++) {
if (board[row][1] == piece &&
board[row][0] == opponent &&
board[row][2] == opponent) {
return true;
}
}
//遍历 3 列(列索引 0-2),
// 仅检查 "该列中间行(索引 1)是己方棋子,
// 上下行(索引 0、2)全是对方棋子"
for (int col = 0; col < 3; col++) {
if (board[1][col] == piece &&
board[0][col] == opponent &&
board[2][col] == opponent) {
return true;
}
}
return false;
}
小贴士
逐行读取 3 行字符串时需要用br.readLine().trim(),可以避免StringTokenizer的分割符问题,其实这题用in.nextToken()还过不了。