Как найти исключение в методе?
Мой класс структур данных работает над реализацией своей собственной структуры данных в форме 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 ответ
Чтобы узнать, какая строка кода вызывает проблему, вы можете напечатать трассировку стека исключения, которое выдается из этого метода.
Не думаете ли вы, что в первом цикле "for" вы должны заменить
toIndex > this.size()
сtoIndex >= this.size()
? Последний индекс спискаsize() - 1
, Например, когда у вас есть 3 элемента в списке,size() = 3
, но индекс последнего элемента равен 2. Это означает, что значениеthis.size()
также находится за пределами массива.