java 基础编程练习3

题目描述:
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.util.Scanner;

public class HelloWorld {
    public static void main(String[] args) {

        Scanner in=new Scanner(System.in);
        //读入井字棋
        String [][] tic = new String [3][3];
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                tic[i][j]=in.next();
            }
        }
        
        boolean kwin=kikiwin(tic);
        boolean bwin=bobowin(tic);
        
        if(kwin==true){
            System.out.println("KiKi wins!");
        }
        else if (bwin==true){
            System.out.println("BoBo wins!");
        }
        else if(kwin==true && bwin==true){
            System.out.println("No winner!");
        }
        else {
            System.out.println("No winner!");
        }
    }

        static boolean kikiwin(String [][] rec){
        boolean kwin=false;
        int sum=0;
        //一行一行遍历,若发现有三个K,则KIKI赢
        for(int i=0;i<3;i++) {
            for (int j = 0; j < 3; j++) {
                if (rec[i][j].equals("K")) {
                    sum++;
                }
            }
            if (sum == 3) {
                kwin = true;
                break;
            }
            sum=0;
        }
        //一列一列遍历,若发现有三个K,则KIKI赢
        sum=0;
        for(int j=0;j<3;j++){
            for(int i=0;i<3;i++){
                if(rec[i][j].equals("K")){
                    sum++;
                }
            }
            if(sum==3){
                kwin=true;
                break;
            }
            sum=0;
        }
        //主对角线都是K
        if(rec[0][0].equals("K") && rec[1][1].equals("K") && rec[2][2].equals("K")){
            kwin=true;
        }
        //次对角线都是K
        if(rec[0][2].equals("K") && rec[1][1].equals("K") && rec[2][0].equals("K")){
            kwin=true;
        }
        return kwin;

    }

		//与KIKI赢的方式一样,只不过他的棋子是B
        static boolean bobowin(String [][] rec){
        int sum=0;
        boolean bwin=false;
        for(int i=0;i<3;i++){
            for(int j=0;j<3;j++){
                if(rec[i][j].equals("B")){
                    sum++;
                }
            }
            if(sum==3){
                bwin=true;
                break;
            }
            sum=0;
        }

        sum=0;
        for(int j=0;j<3;j++){
            for(int i=0;i<3;i++){
                if(rec[i][j].equals("B")){
                    sum++;
                }
            }
            if(sum==3){
                bwin=true;
                break;
            }
            sum=0;
        }
        if(rec[0][0].equals("B") && rec[1][1].equals("B") && rec[2][2].equals("B")){
            bwin=true;
        }
        if(rec[0][2].equals("B") && rec[1][1].equals("B") && rec[2][0].equals("B")){
            bwin=true;
        }
        return bwin;

    }

}