【发布时间】:2017-01-27 18:36:05
【问题描述】:
谁能告诉我为什么这段代码不起作用?它会抛出一个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;
}
}
错误:
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)
【问题讨论】:
-
因为您试图从
sequenceArrayList中删除一个不存在的元素:sequence.remove(0); -
你怎么知道 ArrayLists 中总会有项目?
-
您应该解释为什么您认为此异常与人们遇到相同异常的所有其他时间不同。
-
在您处理线条以确保其正常工作时打印输出到屏幕。或者使用调试器逐步进行。任何你觉得更有用的东西