我的家庭作业要求输出锯齿状2D阵列的指定列的总和。我已经看到其他解决方案,显示如何获得所有列的总和,但不是一个特定的列。我遇到的问题是,如果输入了一列并且2D数组的行中没有元素,我会得到一个java.lang.ArrayIndexOutOfBoundsException。
// returns sum of specified column 'col' of 2D jagged array
public static int columnSum(int[][] array, int col) {
int sum = 0;
// for loop traverses through array and adds together only items in a specified column
for (int j = 0; j < array[col].length; j++) {
sum += array[j][col];
}
return sum;
} // end columnSum()
示例:Ragged Array Input(类名为RaggedArray)
int[][] ragArray = { {1,2,3},
{4,5},
{6,7,8,9} };
System.out.println(RaggedArray.columnSum(ragArray, 2));
这显然给了我一个ArrayIndexOutOfBoundsException,但是如果要求指定的列作为参数,我不知道如何修复它。有任何想法吗?我感谢任何帮助或建议!
答案 0 :(得分:0)
在你的循环中,做一个
try{
sum += array[j][col];
}catch(ArrayIndexOutOfBoundsException e){
}
阻止,如果没有任何东西它只是跳过它,并继续前进到下一个。 你也必须导入该例外。如果遇到麻烦,只需查看try / catch块如何工作
答案 1 :(得分:0)
这是我找到的另一种解决方案。
// returns sum of the column 'col' of array
public static int columnSum(int[][] array, int col) {
int sum = 0;
// for loop traverses through array and adds together only items in a specified column
try {
for (int j = 0; j < array.length; j++) {
if (col < array[j].length)
sum += array[j][col];
}
}
catch (ArrayIndexOutOfBoundsException e){
}
return sum;
} // end columnSum()