Kann mir jemand sagen, warum dieser Code nicht funktioniert? Es wirft einen IndexOutOfBoundsException
.Code wirft eine IndexOutOfBoundsException?
package blok6afvink6;
/**
*
*/
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Scanner;
public class Blok6afvink6 {
public static void main(String[] args) throws FileNotFoundException {
//1st, use Scanner to readin all sequence names and sequences;
//create two arrayList to store sequence names and sequences;
ArrayList<String> name = new ArrayList<String>();
ArrayList<String> sequence = new ArrayList<String>();
Scanner ScanLine = new Scanner(new FileReader("OverlapGraph.txt"));
String seq = "";
while (ScanLine.hasNextLine()) {
String temp = ScanLine.nextLine();
if (temp.charAt(0) == '>') {
sequence.add(seq);
name.add(temp.substring(1));
seq = "";
} else {
seq += temp;
}
}
ScanLine.close();
sequence.remove(0);
sequence.add(seq);
//naam en seq printen
int Len = name.size();
for (int i = 0; i < Len; i++) {
System.out.println(name.get(i) + ": " + sequence.get(i));
}
//3rd, connect all sequences with O3 overlap, put the linked-names into a new string ArrayList
ArrayList<String> overLaps = linkOverlaps(name, sequence);
System.out.println("\nPrintout results:");
for (int i = 0; i < overLaps.size(); i++) {
System.out.println(overLaps.get(i));
}
}
private static ArrayList<String> linkOverlaps(ArrayList<String> name, ArrayList<String> sequence) {
ArrayList<String> overLap = new ArrayList<String>();
//int size = name.size();
for (int i = 0; i < name.size(); i++) {
int Len1 = sequence.get(i).length();
for (int j = 0; j < name.size(); j++) {
if (i != j && sequence.get(i).substring(Len1 - 3).equals(sequence.get(j).substring(0, 3))) {
String linked = name.get(i) + " " + name.get(j);
overLap.add(linked);
}
}
}
return overLap;
}
}
Der Fehler:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.remove(ArrayList.java:492)
at blok6afvink6.Blok6afvink6.main(Blok6afvink6.java:36)
Weil Sie versuchen, ein Element aus dem 'sequence' entfernen' ArrayList', dass doesn‘ t existieren: 'sequenz.remove (0);' – CraigR8806
Woher wissen Sie, dass die ArrayLists immer Elemente in ihnen haben werden? – EJoshuaS
Sie sollten erklären, warum Sie denken, dass diese Ausnahme anders ist als alle anderen Male, die Leute die gleiche Ausnahme haben. – csmckelvey