2015-04-06 46 views
1

我的代碼的一部分包含它。在Java中縮短數組

public void drawBoard(){ 
    for (int i = 0; i < 8; i++){ 
     for (int j = 0; j < 8; j++){ 
      board[i][j] = null; 
     } 
    } 

    board[0][1] = new Piece(false); 
    board[1][1] = new Piece(false); 
    board[2][1] = new Piece(false); 
    board[3][1] = new Piece(false); 
    board[4][1] = new Piece(false); 
    board[5][1] = new Piece(false); 
    board[6][1] = new Piece(false); 
    board[7][1] = new Piece(false); 
} 

除了聲明每個元素的位置之外,有沒有辦法縮短它呢?

+0

你爲什麼不寫一個for循環? – Lalaland

+0

更好的是,8x8電路板可以表示爲索引的單維數組0-63 –

+0

缺省情況下,聲明的對象數組元素不是元素嗎?或者drawBoard()是否隱式重置了電路板?您可能可以通過初始化棋盤來簡化,但很難用一個片段來說明。 – IdusOrtus

回答

5
public void drawBoard(){ 
    for (int i = 0; i < 8; i++){ 
     for (int j = 0; j < 8; j++){ 
      board[i][j] = null; 

     } 
     board[i][1] = new Piece(false); 
    } 
} 

對於踢腿,如果您使用一維數組表示8x8板,您可以用這種方式做同樣的事情,消除一個循環。

public void drawBoard() { 
    int j = -1; 
    for (int i = 0; i < 64; i++) { 
     // j represents your "column" 
     // every 8 counts, a new column is found 
     if (i % 8 == 0) { 
      j++; 
     } 

     // for the '1' column, set your piece, else null 
     board[i] = (j == 1) ? new Piece(false) : null; 
    } 
}