Было бы легче обнаружить это, если бы вы опубликовали трассировку стека вашего исключения. Вот мое предположение:
int temp = matrix[row][colum];
Какие здесь значения row
и column
? Они последний раз использовались ранее в цикле для печати массива, поэтому теперь у вас есть row == matrix.length
и column == matrix[row].length
(со значением row
, равным одному).
Конечно, это за пределами допустимых границ массива, и вы получаете исключение IndexOutOfBoundsException.