Сообщение об ошибке времени выполнения в коде нулевой матрицы установки на языке Java

Я получил эту ошибку, когда запускаю этот код, и я не знаю, как решить эту проблему.

Сообщение об ошибке во время выполнения:

ПРЕДУПРЕЖДЕНИЕ. Параметр командной строки активировал диспетчер безопасности.

ПРЕДУПРЕЖДЕНИЕ. Диспетчер безопасности устарел и будет удален в будущем выпуске.

java.lang.ArrayIndexOutOfBoundsException: индекс 1 выходит за пределы длины 1

в строке 14, Solution.setZeroes

в строке 54, DriverSolution.помощник

в строке 84, Водитель.main

Последний выполненный ввод:

[[1],[0]]

Кодекс:

class Solution {
public void setZeroes(int[][] matrix) {
        boolean firstColumnZero = false;
        boolean firstRowZero = false;
        
        for(int i=0;i<matrix.length;i++){
            if (matrix[i][0]==0){
                firstColumnZero = true;
                break;
            }
        }
        
        for(int i=0;i<matrix.length;i++){
            if (matrix[0][i]==0){
                firstRowZero = true;
                break;
            }
        }
        for(int i=0;i<matrix.length;i++){
            for(int j=0;j<matrix[0].length;j++){
                if (matrix[i][j]==0){
                    matrix[i][0]=0;
                    matrix[0][j]=0;
                }
            }
        }
            
        for(int i=1;i<matrix.length;i++){
            for(int j=1;j<matrix[0].length;j++){
                if (matrix[i][0]==0||matrix[0][j]==0){
                    matrix[i][j]=0;
                }
            }
        }
        
        if (firstColumnZero){
            for(int i=0;i<matrix.length;i++){
                matrix[i][0]=0;
            }
        }
    if (firstRowZero){
        for(int i=0;i<matrix[0].length;i++){
            matrix[0][i]=0;
        }
    }
}

}

Результат:

Принятый

Время выполнения: 0 мс

Ваш вклад

[[1,1,1],[1,0,1],[1,1,1]]

[[0,1,2,0],[3,4,5,2],[1,3,1,5]]

Выход

[[1,0,1],[0,0,0],[1,0,1]]

[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

Ожидал

[[1,0,1],[0,0,0],[1,0,1]]

[[0,0,0,0],[0,4,5,0],[0,3,1,0]]

«Я получил эту ошибку при запуске этого кода» — вы не показали свой метод main. Мы не знаем, как вы вызываете метод setZeroes.

Jon Skeet 22.03.2022 16:27

Эм, я не знаю, что вы имеете в виду. У вас есть есть метод main в вашем классе Driver. Вам нужно шоу использовать этот метод.

Jon Skeet 22.03.2022 17:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код может быть вашей проблемой:

for ( int i = 0; i < matrix.length; i++ )
{
    if ( matrix[0][i] == 0 )
    {
        firstRowZero = true;
        break;
    }
}

Вы захотите изменить оператор for на это:

for ( int i = 0; i < matrix[0].length; i++ )

Другие вопросы по теме