Сумма указанного столбца Неровный массив

Мое домашнее задание заключается в том, чтобы вывести сумму указанного столбца массива Jagged 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 (класс называется RaggedArray)

int[][] ragArray = { {1,2,3}, 
                     {4,5}, 
                     {6,7,8,9} };

System.out.println(RaggedArray.columnSum(ragArray, 2));

Это, очевидно, дает мне исключение ArrayIndexOutOfBoundsException, но я не знаю, как это исправить, если указанный столбец запрашивается в качестве аргумента. Любые идеи? Я ценю любую помощь или предложения!


person gregs    schedule 10.03.2014    source источник


Ответы (2)


В своем цикле выполните

try{
  sum += array[j][col];
}catch(ArrayIndexOutOfBoundsException e){

}

блок, где он просто пропускает, если ничего нет, и переходит к следующему. вам также придется импортировать это исключение. Если у вас возникнут проблемы, просто посмотрите, как работают блоки try/catch.

person Snappawapa    schedule 10.03.2014
comment
Большое спасибо! Оно работает! Я думал, что мне придется использовать try catch, но я все еще новичок в Java и не был уверен. - person gregs; 10.03.2014
comment
Без проблем! Если это был ваш ответ, отметьте его так - person Snappawapa; 10.03.2014

Вот еще одно решение, которое я нашел.

// 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()
person gregs    schedule 10.03.2014