Java 在二维数组中填充随机数以进行列/行相加

Java 在二维数组中填充随机数以进行列/行相加,java,arrays,random,fill,Java,Arrays,Random,Fill,大家好,Java新手,我进展缓慢。在添加行和列之前,我试图用随机数填充二维数组。到目前为止,我可以创建数组,显示它,并且我非常确定我已经对加法位进行了排序。但当我尝试用随机数填充它时,我有一种出界的感觉。我哪里做错了 public static void main(String[] args) { //create the grid final int row = 9; final int col = 9; int [][] grid = new int [row

大家好,Java新手,我进展缓慢。在添加行和列之前,我试图用随机数填充二维数组。到目前为止,我可以创建数组,显示它,并且我非常确定我已经对加法位进行了排序。但当我尝试用随机数填充它时,我有一种出界的感觉。我哪里做错了

public static void main(String[] args)
{
    //create the grid
    final int row = 9;
    final int col = 9;
    int [][] grid = new int [row][col];

    //fill the grid
    for (int i=0; i<grid.length; i++)
    grid[i][grid[i].length] = (int)(Math.random()*10);

    //display output
    for(int i=0;i<grid.length; i++)
    {
        for(int j=0; j<grid[i].length; j++)
        System.out.print(grid[i][j]+"");
        System.out.println();
    }

    int sum = 0;
    for (int i = 0; i < grid.length; i++) {
        System.out.println("This row sums up to: " + sum);


        for (int j = 0; j < grid[i].length; j++) {
            sum += grid[j][i];
        }
        System.out.println("This column sums up to: " + sum);
    }
}
这将是一个越界的例外。数组
a
的最大索引是
a.length-1
(因为数组是0索引的)——您正在尝试访问
a.length
的索引。这里
a
grid[i]

在任何情况下,如果要完全填充阵列,则需要两个
循环:

for (int i = 0; i < grid.length; i++) {
    for (int j = 0; j < grid[i].length; j++) {
        grid[i][j] = (int)(Math.random()*10);
    }
}

它不那么冗长,也许更清晰。

Argh!当然这很有道理。非常感谢您的帮助。@Bmc没问题,很高兴我能帮忙。别忘了。
for (int i = 0; i < grid.length; i++) {
    for (int j = 0; j < grid[i].length; j++) {
        grid[i][j] = (int)(Math.random()*10);
    }
}
int sum = 0;

for (int[] row : grid)
    for (int n : row)
        sum += n;