我已經被賦予打印我已經構建到控制檯的棋盤的任務。電路板的頂部必須有'a'到'h',而左邊的是1到8。每個首字母應該與一個字母和一個數字對齊,例如,一個黑車(「bR」)應該放置在8處(並且應該在數組中初始化爲[0] [0])。當我在我的printBoard方法中內嵌的for循環僅限於j < 1時,第一行的部分打印在正確的位置,但是當擴大極限時打印整個紙板時,會在不正確的位置打印部件,我不知道爲什麼。 (我承認存在代碼可讀性和代碼效率不高的問題,例如,不是簡單地初始化電路板,省去冗長的if/else塊,並給予enums一個toString方法來縮短開關語句)。爲什麼我的打印方法在嵌套for循環時無法正確顯示超出j <1?
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<8;j++){
System.out.print("\t");
switch(chessboard[i][j]){
case WHITE_KING : System.out.print("WK");
break;
case WHITE_QUEEN : System.out.print("wQ");
break;
case WHITE_ROOK : System.out.print("wR");
break;
case WHITE_BISHOP : System.out.print("wB");
break;
case WHITE_KNIGHT : System.out.print("wK");
break;
case WHITE_PAWN : System.out.print("wP");
break;
case BLACK_KING : System.out.print("BK");
break;
case BLACK_QUEEN : System.out.print("bQ");
break;
case BLACK_ROOK : System.out.print("bR");
break;
case BLACK_BISHOP : System.out.print("bB");
break;
case BLACK_KNIGHT : System.out.print("bK");
break;
case BLACK_PAWN : System.out.print("bP");
break;
} //switch
} /// j for
} //i for
k--;
System.out.println("\n" + "\n"+k);
}
public static void main(String[] args) {
createBoard();
printBoard(chessboard);
}
}
請輸入正確和錯誤的輸出示例。 – chrylis 2014-09-30 09:54:27
看看這個http://stackoverflow.com/questions/6667243/using-enum-values-as-string-literals – 2014-09-30 10:27:28