Почему я проваливаю пустой тест в JAVA? - PullRequest
0 голосов
/ 08 октября 2018

РЕДАКТИРОВАТЬ: проблема решена, спасибо, ребята.И спасибо за другие советы тоже!

Я делаю 4кю ката в CodeWars под названием «Улитка» (используя JAVA).Все работает отлично, все тесты пройдены вместо одного - «пустой регистр».

В журнале для этих тестов написано:

[[]] should be sorted to []

Так что я предполагаю, что «если массив пуст, Я должен также вернуть пустой массив ".

Ниже я представляю начало моего метода:

public static int[] snail(int[][] array) { 
    if ((array.length==0)) {
        int[] result  = new int[0]; 
        return result;
    }      

    if ((array==null)) {
        int[] result  = null;
        return result;
    }

Я также пытался вернуть ноль для обоих случаев, затем я попыталсявернуть пустой массив в обоих случаях тоже ...

Есть идеи, что нужно сделать, чтобы пройти этот тест с пустым регистром?

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Ваше первое if условие оценивается как true тогда метод вызывается с массивом, который был инициализирован как new int[0][] - где array.length равно 0.Журнал тестов подсказывает вам рассмотреть случай, когда array.length равен 1, а array[0].length равен 0, например, когда кто-то инициализировал и присвоил массив, например

int[][] array = new int[1][];
array[0] = new int[0];

Просто для удобства чтения- у ваших if условий есть дополнительная пара скобок.

0 голосов
/ 08 октября 2018

Шаги для определения проблемы в вашем коде:

  1. Прочтите инструкции.
  2. Признайте, что [] не null.
  3. Посмотрите на свойкод;обратите внимание, что вы возвращаете нуль, когда вход пуст.
  4. Примите, что [] не является null.
  5. Возвращает и пустой массив, когда вход пуст.
  6. Следует понимать, что array.length гарантированно генерирует исключение NullPointerException, если array равно нулю.
  7. Проверка на null перед попыткой разыменования параметра array.
0 голосов
/ 08 октября 2018

Я думаю, что внешний массив содержит внутренний массив, поэтому его длина равна 1 - не так ли?Внутренний массив не содержит ничего, поэтому его нужно проверить.

...