Textfile Parse上的数组IndexOutOfBoundsException

时间:2015-11-18 02:02:46

标签: java arrays string parsing text

我有一个简单的文本文件:

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的索引,但仍然遇到了这个问题。 我做错了什么?

1 个答案:

答案 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