2017-10-31 2 views
-1

Meine Datenstrukturklasse arbeitet an der Implementierung einer eigenen Datenstruktur in Form einer SkipList. Die Methode, an der ich arbeite, ist subList. Ich habe die meisten Fehler durchgearbeitet, aber ich bekomme eine Fehlermeldung, dass in meiner testSubList() Methode eine Ausnahme ausgelöst wird. Ich bin mir nicht sicher, was das sein könnte, da ich glaube, dass ich alle Fehler mit den Eingabevariablen behandelt habe. Vorausgesetzt, dass alle anderen Methoden funktionieren, was könnte diesen Fehler verursachen?Wie finde ich eine Ausnahme in einer Methode?

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; 
     } 
    } 
+5

Normalerweise ist die Stack-Trace ziemlich ausführlich. Es enthält die genaue (n) Zeile (n), in der die Ausnahme auftritt, sowie den Typ der Ausnahme und eine Nachricht, falls verfügbar. Bitte klären Sie Ihre Frage, da die notwendigen Informationen in der Stack-Trace vorhanden sein sollten. – Turing85

+4

Warum postest du nicht einfach den Stack-Trace der Ausnahme? –

Antwort

0
  1. Um zu wissen, welche Codezeile das Problem verursacht, können Sie Stack-Trace der Ausnahme drucken, die von dieser Methode geworfen wird.

  2. Glaubst du nicht, dass in der ersten "for" -Schleife, ersetzen Sie toIndex > this.size() durch toIndex >= this.size()? Der letzte Index der Liste ist size() - 1. Wenn Sie beispielsweise 3 Elemente in einer Liste haben, ist size() = 3, aber der Index des letzten Elements ist 2. Dies bedeutet, dass der Wert this.size() ebenfalls außerhalb der Grenzen des Arrays liegt.

Verwandte Themen