我是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)
看着你的阵列
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以外的任何东西都将引发错误,因为它只有该元素.
您有两种选择:
仅使用具有相同数量元素的数组.
int[][] numbers3 = {{3,1,3}, {2, 4, 6}, {3, 6,5}, {3, 6, 9}};
Run Code Online (Sandbox Code Playgroud)添加一个检查并传入0
if(nums[row].length > i)
sum = sum + nums[row][i];
Run Code Online (Sandbox Code Playgroud)这样,它永远不会尝试检查无效索引nums[row].
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |