我有一个简单的文本文件:
John Jobs 225 Louis Lane Road
Amy Jones 445 Road Street
Corey Dol 556 The Road
我有人姓氏和姓氏的地方
我试图像这样解析它们:
public void parseText() {
try {
File file = new File("test.txt");
String[] splitted;
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
String s = sc.nextLine();
splitted = s.split("\\s+");
System.out.println(splitted[0]);
}
sc.close();
} catch (FileNotFoundException e) {
System.out.println("Error"); }
}
splitted [0]工作正常,打印出人们的第一个名字。 splitted [1]打印出姓氏,但给了我一个IndexOutOfBoundsException。 spitted [2]打印出每个地址的第一个整数值,但再次给我一个例外。
所以然后我尝试这样做:
String[] splitted = new String[4];
并再次尝试访问任何大于0的索引,但仍然遇到了这个问题。 我做错了什么?
答案 0 :(得分:0)
这是您的文件内容:
John Jobs 225 Louis Lane Road
Amy Jones 445 Road Street
Corey Dol 556 The Road
当读取和拆分每一行时,splitted
将包含第一次运行的6个元素和下一次运行的5个元素。因此,如果您不仔细使用索引,您显然会得到IndexOutOfBoundsException
。
更好的方法是使用foreach循环:
while (sc.hasNextLine()) {
String s = sc.nextLine();
splitted = s.split("\\s+");
//System.out.println(Arrays.toString(splitted));
for (String string : splitted) {
System.out.print(string+" ");
}
System.out.println();
.....rest of code