如何修复二维数组的ArrayIndexOutOfBoundsException

Pha*_*tom 3 java arrays

我是Java编程的初学者,我只是编写一个简单的程序来返回二维数组的第i列中的元素总和.

但是我的一个测试用例给了我一个ArrayIndexOutOfBoundsException错误,如下所示:

发生问题的测试用例:

int[][] numbers3 = {{3}, {2, 4, 6}, {3, 6}, {3, 6, 9, 12}};
System.out.println(columnSum(3, numbers3));
Run Code Online (Sandbox Code Playgroud)

这是我从此测试用例中获得的错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at Array.columnSum(Array.java:12)
    at Array.start(Array.java:6)
    at ArrayApp.main(ArrayApp.java:7)
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题...所以有人可以请指出我的错误吗?谢谢 !

这是我的代码:

    public class Array {

    public void start() {
        int[][] numbers3 = {{3}, {2, 4, 6}, {3, 6}, {3, 6, 9, 12}};
        System.out.println(columnSum(3, numbers3));
    }

    private int columnSum(int i, int[][] nums) {
        int sum = 0;
        for(int row = 0; row < nums.length; row++){
            sum = sum + nums[row][i];
        }
        return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我使用的一些工作正常的测试用例.

测试案例1:

int[][] nums = {{0, 1, 2, 3}, {2, 4, 6, 8}, {3, 6, 9, 12}};
System.out.println(columnSum(0, nums));
Run Code Online (Sandbox Code Playgroud)

测试案例2:

int[][] nums2 = {{0, 1, 2, 3}, {2, 4, 6, 8}, {3, 6, 9, 12}};
System.out.println(columnSum(3, nums2));
Run Code Online (Sandbox Code Playgroud)

Arh*_*owk 5

看着你的阵列

int[][] numbers3 = {{3}, {2, 4, 6}, {3, 6}, {3, 6, 9, 12}};
Run Code Online (Sandbox Code Playgroud)

numbers3 [0]只有{3},这是一个1的数组大小.因此,调用数字[3] [x],其中x是除0以外的任何东西都将引发错误,因为它只有该元素.

您有两种选择:

  1. 仅使用具有相同数量元素的数组.

    int[][] numbers3 = {{3,1,3}, {2, 4, 6}, {3, 6,5}, {3, 6, 9}};
    
    Run Code Online (Sandbox Code Playgroud)
  2. 添加一个检查并传入0

    if(nums[row].length > i)
        sum = sum + nums[row][i];
    
    Run Code Online (Sandbox Code Playgroud)

这样,它永远不会尝试检查无效索引nums[row].