编程初学者入门训练-井字棋
2020-06-30 11:26
190 查看
题目描述
KiKi和BoBo玩 “井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输入描述
三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
输出描述
如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
示例1
输入
K O B
O K B
B O K
输出
KiKi wins!
代码实现
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); char[][] table = new char[3][3]; //读入棋盘当前状态 for(int i=0;i<table.length;i++){ String s = input.readLine(); for(int j=0;j<table.length;j++){ table[i][j] = s.charAt(2*j);//偶数下标为字符元素 } } //判断输赢并输出结果 boolean Kwin = false; boolean Bwin = false; Kwin = checkWiner('K',table); Bwin = checkWiner('B',table); if(Kwin==true && Bwin==true){ System.out.println("No winner!"); }else if(Kwin==true){ System.out.println("KiKi wins!"); }else if(Bwin==true){ System.out.println("BoBo wins!"); }else{ System.out.println("No winner!"); } } public static boolean checkWiner(char C,char[][] table){ int Cnum = 0; int size = 3; //判断正对角线是否满足 for(int i=0;i<size;i++){ if(table[i][i]==C){ Cnum++; } } if(Cnum==3){ return true; } Cnum = 0; //判断反对角线是否满足 if(table[0][2]==C&&table[1][1]==C&&table[2][0]==C){ return true; } //判断行项是否满足 for(int i=0;i<size;i++){ for(int j=0;j<size;j++){ if(table[i][j]==C){ Cnum++; } } if(Cnum==3){ return true; } Cnum = 0; } //判断列项是否满足 for(int i=0;i<size;i++){ for(int j=0;j<size;j++){ if(table[j][i]==C){ Cnum++; } } if(Cnum==3){ return true; } Cnum = 0; } return false; } }
相关文章推荐
- 编程初学者入门训练-X形图案
- 编程初学者入门训练-矩阵元素定位
- 编程初学者入门训练-包含数字9的数
- 编程初学者入门训练-菱形图案
- 编程初学者入门训练-班级成绩输入输出
- 编程初学者入门训练-序列中整数去重
- 编程初学者入门训练-最高身高
- 编程初学者入门训练-最高分与最低分之差
- 编程初学者入门训练-N个数之和
- 编程初学者入门训练-KiKi求质数个数
- 编程初学者入门训练-简单计算器
- 编程初学者入门训练-序列中删除指定数字
- 编程初学者入门训练-逆序输出
- 编程初学者入门训练-统计成绩
- 编程初学者入门训练-矩阵计算
- 编程初学者入门训练-争夺前五名
- 编程初学者入门训练-KiKi和酸奶
- 编程初学者入门训练-有序序列合并
- 编程初学者入门训练-有序序列插入一个整数
- 编程初学者入门训练-密码验证