**已关闭。**此问题需要debugging details。目前不接受答案。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
4天前关闭。
Improve this question的
我尝试使用基本的Scanner对象在Java中解析一个巨大的tsv文件(其中包含来自imdb的列表格式的数据)。当我在解析时到达某个元素时,我得到了一个“Index out of bounds exception”,尽管原始文件似乎没有任何问题。下面是我运行以获取数据的代码:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String filePath = "G:/TSV/data.tsv";
List<BasicsObject> basicsObjectsList = new ArrayList<>();
try {
Scanner scanner = new Scanner(new File(filePath));
scanner.useDelimiter("\t");
String first = scanner.nextLine();
Integer i = 0;
while(scanner.hasNextLine()) {
i++;
String line = scanner.nextLine();
String[] fields = line.split("\t");
if(fields.length < 7) {
System.out.println(fields[0] + "\t" + fields[1] + "\t" + fields[2] + "\t" + fields[3] + "\t" + fields[4] + "\t" + fields[5] + "\t");
}
if (!"\\N".equals(fields[5]) && !"\\N".equals(fields[6])) {
BasicsObject basicsObject = new BasicsObject(
fields[0],
Integer.valueOf(fields[5]),
Integer.valueOf(fields[6])
);
System.out.println(basicsObject.toString());
basicsObjectsList.add(basicsObject);
} else if (!"\\N".equals(fields[5]) && "\\N".equals(fields[6])) {
BasicsObject basicsObject = new BasicsObject(
fields[0],
Integer.valueOf(fields[5]),
0
);
System.out.println(basicsObject.toString());
basicsObjectsList.add(basicsObject);
} else if ("\\N".equals(fields[5]) && !"\\N".equals(fields[6])) {
BasicsObject basicsObject = new BasicsObject(
fields[0],
0,
Integer.valueOf(fields[6])
);
System.out.println(basicsObject.toString());
basicsObjectsList.add(basicsObject);
} else {
BasicsObject basicsObject = new BasicsObject(
fields[0],
0,
0
);
System.out.println(basicsObject.toString());
basicsObjectsList.add(basicsObject);
}
}
System.out.println(i);
scanner.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(basicsObjectsList.size());
}
}
字符串
为了打开文件,我不得不使用一个名为LFTViewer5u的专用程序,但我可以确认文件中的数据似乎没有损坏。下面是我遇到的问题的相关数据的一部分:
tt0000669 short Cupid's Pranks Cupid's Pranks 0 1908 \N 10 Comedy,Fantasy,Short
tt0000670 short El curioso impertinente El curioso impertinente 0 1908 \N 12 Short
tt0000671 short Desdemona Desdemona 0 1908 \N \N Drama,Short
型
下面是我的程序的输出,其中包含了违规行和错误:
BasicsObject{tconst='tt0000669', startYear=1908, endYear=0}
tt0000670 short El curioso impertinente El curioso impertinente 0 1908
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
at Main.main(Main.java:29)
型
下面是空白检测器的结果:
1条答案
按热度按时间hgncfbus1#
看起来我的旧Eclipse IDE在阅读TSV文件时有bug。我已经下载了Intellij并运行了同样的代码,这些代码给了我错误,它运行得很顺利。我不知道还能说什么,但那。