为什么我得到索引超出绑定的exeption:无效的数组范围0到0?

时间:2017-08-10 09:57:06

标签: arrays indexoutofboundsexception

public static void main(String[] args){
     Random ran = new Random();
     int nums[][];
     nums = new int[3][5];

     for(int i=0;i<3;i++)
         for(int j=0;j<5;j++){
             nums=new int[i][j];
             nums[i][j]=1+ran.nextInt(90);
     }
}

2 个答案:

答案 0 :(得分:0)

nums=new int[i][j]

这里你要创建一个长度为i和y的数组 下一行nums=new int[i][j] 您正在尝试访问最后一个索引但索引从索引0开始到长度-1 您应该使用nums = new int [i-1] [j-1]来获取最后一个索引

答案 1 :(得分:0)

在循环的第一次迭代中,您调用行:nums = new int[i][j],但i和j为0.因此,实际上您调用nums = new int[0][0]并且这不是有效语句。

我认为你打算做的是分配一次数组(在第二行之外的双循环之外)并且仅在循环中分配值。尝试删除行nums = new int[i][j],看看这是否符合预期。我不会通过这个声明得到你想要达到的目标。