2015-04-06 50 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; 
    } 
}