Sum Specified Column Jagged Array

时间:2014-03-10 01:50:24

标签: arrays multidimensional-array jagged-arrays

我的家庭作业要求输出锯齿状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,但是如果要求指定的列作为参数,我不知道如何修复它。有任何想法吗?我感谢任何帮助或建议!

2 个答案:

答案 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()