Почему оператор switch не может вывести строки по желанию? (Джава)

Мне дали задание напечатать шахматную доску, которую я построил на консоли. Доска должна быть окаймлена буквой "а" - "ч" сверху и 1-8 вертикально вниз слева. Каждый инициал должен совпадать с буквой и номером, поэтому, например, черная ладья ("bR") должна быть помещена в 8 (и должна быть инициализирована как [0][0] в массиве). Исключая очевидные проблемы с неэффективностью (следует использовать массив символов для верхних меток символов), почему вложенный цикл for в методе printBoard не может печатать инициалы на консоли в правильных местах?

public class Virtual_Chessboard {

    public enum Chessmen{
        WHITE_KING,
        WHITE_QUEEN,
        WHITE_ROOK,
        WHITE_BISHOP,
        WHITE_KNIGHT,
        WHITE_PAWN,
        BLACK_KING,
        BLACK_QUEEN,
        BLACK_ROOK,
        BLACK_BISHOP,
        BLACK_KNIGHT,
        BLACK_PAWN,
        EMPTY
    }

    public static Chessmen[][] chessboard = new Chessmen[8][8];

    public static void createBoard(){


        int rows = 8;
        int columns = 8;

        for(int y=0;y<rows;y++){
            for(int x=0;x<columns;x++){
                if((y==0 && x==0) || (x==7 && y==0) ){
                    chessboard[x][y] = Chessmen.BLACK_ROOK;
                }
                else if((x==1 && y==0)||(x==6 && y==0)){
                    chessboard[x][y] = Chessmen.BLACK_KNIGHT;
                }
                else if((x==2 && y==0)||(x==5 && y==0)){
                    chessboard[x][y] = Chessmen.BLACK_BISHOP;
                }
                else if(x==3 && y==0){
                    chessboard[x][y] = Chessmen.BLACK_KING;
                }
                else if(x==4 && y==0){
                    chessboard[x][y] = Chessmen.BLACK_QUEEN;
                }
                else if((x==0 && y==7)||(x==7 && y==7)){
                    chessboard[x][y]= Chessmen.WHITE_ROOK;
                }
                else if((x==1 && y==7)||(x==6 && y==7)){
                    chessboard[x][y] = Chessmen.WHITE_KNIGHT;
                }
                else if((x==2 && y==7)||(x==5 && y==7)){
                    chessboard[x][y] = Chessmen.WHITE_BISHOP;
                }
                else if(x==3 && y==7){
                    chessboard[x][y] = Chessmen.WHITE_KING;
                }
                else if(x==4 && y==7){
                    chessboard[x][y] = Chessmen.WHITE_QUEEN;
                }
                else if(y==1){
                    chessboard[x][y] = Chessmen.BLACK_PAWN;
                }
                else if(y==6){
                    chessboard[x][y] = Chessmen.WHITE_PAWN;
                    }
                else{
                    chessboard[x][y] = Chessmen.EMPTY;
                }
            }
        }
    }

    public static void printBoard(Chessmen[][] chessboard){
        int k = 8;
        System.out.print("\t"+"a" + "\t" + "b" + "\t" + "c" + "\t" + "d" +  "\t" + "e"+ "\t" + "f" + "\t" + "g" + "\t" + "h" + "\n" + k);
        for(int i = 0; i<8;i++){
            for(int j = 0;j<1;j++){
                System.out.print("\t");
                switch(chessboard[i][j]){
                case WHITE_KING : System.out.print("WK");
                case WHITE_QUEEN : System.out.print("wQ");
                case WHITE_ROOK : System.out.print("wR");
                case WHITE_BISHOP : System.out.print("wB");
                case WHITE_KNIGHT : System.out.print("wK");
                case WHITE_PAWN : System.out.print("wP");
                case BLACK_KING : System.out.print("BK");
                case BLACK_QUEEN : System.out.print("bQ");
                case BLACK_ROOK : System.out.print("bR");
                case BLACK_BISHOP : System.out.print("bB");
                case BLACK_KNIGHT : System.out.print("bK");
                case BLACK_PAWN : System.out.print("bP");
                case EMPTY : System.out.print("\t");
                } //switch

            } /// j for 

            k--;
            System.out.println("\n"+k);
        } //i for

    }

    public static void main(String[] args) {


        createBoard();
        printBoard(chessboard);

    }

}

2 ответа

Вы должны прекратить каждый case заявление с break продолжить выполнение после окончания блока переключателей. В противном случае вы попадете в следующую инструкцию.

Ваш ПУСТОЙ кейс печатает "\t". Это собирается сдвинуть ваши колонки. Ни один из других типов фрагментов не печатает \t, и вы все равно печатаете его в цикле. Следовательно, это должно быть просто print("");

Другие вопросы по тегам