2015-10-09 40 views
0

我试图用Java创建一个二维数组,我想数组类似于下面:我可以初始化二维数组从1开始的for循环

public class HelloWorld{ 

public static void main(String []args){ 
    System.out.println("Hello World"); 

    int[][] board = new int[3][3]; 
    System.out.println(board.length); 
    for (int i = 1; i <= board.length; i++) { 
     for (int j = 1; j <= board[i].length; j++) { 
      board[i][j] = 1; 
      System.out.println(board[i][j]); 
     } 
    } 
    } 
} 

这是扔ArrayIndexOutOfBoundsException

当我在for循环中尝试i = 0j = 0。它工作正常。

+0

长度为len的数组的索引从'0'到'len - 1'。大小为'2'的数组在索引“0”和“1”处具有元素。 –

+0

用1开始i和j的原因是什么? –

+0

我将需要它来解决国际象棋棋盘上的问题 – Archana

回答

0

您正在循环,直到<= board.length<= board[i].length

这实际上应该只是< board.length< board[i].length,因为数组索引范围从0-array.length - 1。因此,您应该从i = 0j = 0开始。

0

问题来自for循环的终止条件。当您应该使用i < board.length时,您正在使用i <= board.length。第二个循环与j <= board[i].length相同。

for (int i = 0; i < board.length; i++) { 
    for (int j = 0; j < board[i].length; j++) { 
     board[i][j] = 1; 
     System.out.println(board[i][j]); 
    } 
} 

的rember,在Java中,一个阵列的第一索引的索引为0,所以最后一个索引是在索引length - 1

+0

如果我不使用'i <= board.length',只有几个数组索引被填充值。 – Archana

+0

@Archana然后,你也应该从'i = 0'和'j = 0'开始,我也没有直接看到。 – SomeJavaGuy