Как сравнить два 2D-массива в Java? - PullRequest
0 голосов
/ 19 сентября 2018

Я новичок, пытающийся написать в Java функцию, которая возвращает true, если два переданных 2D-массива типа int имеют одинаковый размер в каждом измерении, а false в противном случае.Требование состоит в том, что если оба массива равны null, вы должны вернуть true.Если один null, а другой нет, вы должны вернуть false.

Каким-то образом получить сообщение об ошибке для моего кода:

public static boolean arraySameSize(int[][] a, int[][] b) {
    if (a == null && b == null) {
        return true;
    }
    if (a == null || b == null) {
        return false;
    }
    if (a.length == b.length) {
        for (int i = 0; i < a.length; i++) {
            if (a[i].length == b[i].length) {
                return true;
            }
        }   
    }
    return false;
}

Любая помощь будет принята с благодарностью!

Редактировать: Проблема "Ошибка времени выполнения: ноль"

1 Ответ

0 голосов
/ 19 сентября 2018

Ваша логика уже выглядит почти на месте.Единственная проблема, которую я вижу, заключается в логике обработки случая, когда оба массива не равны нулю и имеют одинаковое первое измерение.Вы должны возвращать false, если какой-либо индекс не имеет соответствующей длины:

public static boolean arraySameSize(int[][] a, int[][] b) {
    if (a == null && b == null) {
        return true;
    }
    if (a == null || b == null) {
        return false;
    }
    if (a.length != b.length) {
        return false;
    }

    // if the code reaches this point, it means that both arrays are not
    // null AND both have the same length in the first dimension
    for (int i=0; i < a.length; i++) {
        if (a[i] == null && b[i] == null) {
            continue;
        }
        if (a[i] == null || b[i] == null) {
            return false;
        }
        if (a[i].length != b[i].length) {
            return false;
        }
    }

    return true;
}

Перейдите по демонстрационной ссылке ниже, чтобы увидеть некоторые примеры правильной работы этого метода.

Демо

...