Как найти исключение в методе?

Мой класс структур данных работает над реализацией своей собственной структуры данных в форме SkipList. Метод, над которым я работаю, это subList. Я обработал большинство ошибок, но я получаю сообщение о том, что в моем исключении testSubList() метод. Я не уверен, что это может быть, так как я считаю, что я покрыл все ошибки с входными переменными. Предполагая, что все другие методы работают, что может быть причиной этой ошибки?

public List<E> subList(int fromIndex, int toIndex)
{
  //subList method written by Ryan Schubert
//if a trivial case where the index is out of bounds occurs throw exception
  if (fromIndex < 0 || toIndex > this.size() || toIndex < fromIndex){
    throw new IndexOutOfBoundsException();
  }
//make new skiplist to add values to
    List<E> sub = new SkipList<E>();
//run through the skiplist between the indices and add the values to sub
    for(int i = fromIndex; i<toIndex; i++)
    {
        sub.add(this.get(i));
    }
    return sub;
}  
public static boolean testSubList()
    {
      //testSubList method written by Ryan Schubert
      //make a new list and add a bunch of values to it
        List<String> testList = new SkipList<String>();

        testList.add("test1");
        testList.add("test2");
        testList.add("test3");
        testList.add("test4");
        testList.add("test5");
        testList.add("test6");
        //make a new list and fill it with sub list values
        List<String> testSubList = new SkipList<String>();
        testSubList = testList.subList(1, 4);
        //compare the test list to the sublist
        if (testList.containsAll(testSubList))
        {
            System.out.println("true");
            return true;
        }
        else
        {
            System.out.println("false");
            return false;
        }
    }

1 ответ

  1. Чтобы узнать, какая строка кода вызывает проблему, вы можете напечатать трассировку стека исключения, которое выдается из этого метода.

  2. Не думаете ли вы, что в первом цикле "for" вы должны заменить toIndex > this.size() с toIndex >= this.size()? Последний индекс списка size() - 1, Например, когда у вас есть 3 элемента в списке, size() = 3, но индекс последнего элемента равен 2. Это означает, что значение this.size() также находится за пределами массива.

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