如何在方法中查找异常?

时间:2017-10-31 21:25:27

标签: java exception sublist skip-lists

我的数据结构类正在以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 个答案:

答案 0 :(得分:0)

  1. 要了解哪一行代码导致问题,您可以打印从此方法抛出的异常的堆栈跟踪。

  2. 你不认为在第一个&#34; for&#34;循环,你应该用toIndex > this.size()替换toIndex >= this.size()?列表的最后一个索引是size() - 1。例如,如果列表中有3个项目size() = 3,但最后一项的索引是2.这意味着this.size()的值也超出了数组的范围。