Как обрабатывать List IndexOutOfBoundsException? - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь написать метод get () для LinkedList, где закрытый метод используется общедоступным, но я продолжаю получать исключение IndexOutOfBoundsException, и я не знаю, откуда он.

Исключению также не нравится целочисленные значения, строки, значения типа double и все остальные типы данных.

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

public E get(int i)
   {
      if (i < 0 || i >= size())
      {
         throw new IndexOutOfBoundsException("" + i);
      }
      else if (i == 0 )
      {
         return head.value;
      }
      return get(i, head);
   }

   private E get(int i, Node node)
   {
      if (i == 0)
      {
         return (E) node.value;
      }
      return (E) get(i - 1, node.next);
   }

1 Ответ

1 голос
/ 31 октября 2019

Код, который вы показали, верен (хотя это может быть проще). Я могу придумать две возможные причины для этого IndexOutOfBoundsException:

  1. Индекс, переданный в get, неверен,
  2. Метод size() не возвращаетправильное значение.

Я думаю, что это все, что мы можем сказать, прочитав ваш вопрос.

...