ArrayIndexOutOfBounds尝试从阅读器分割行时

时间:2013-12-03 05:05:37

标签: java string file parsing

我正在尝试编写一个java程序来解析具有特定格式的.txt文件中的相关字符串。 我想使用.txt文件的内容来启动我的类的数据。示例文件如下所示:

Movies
Lord of the Rings: 180
Fight Club: 120
...
Theaters
A:100
B:50
C:200
...
Shows
1,1,960
1,1,1080
1,1,1200
1,3,1020
1,3,1140
2,2,990
2,2,1210
...
Prices
Adult:10
Child:7
Senior:8
...
End

这是我到目前为止(在尝试阅读上述文件以初始化我的类时返回错误。

public static void inititializeFromFile(String fileName) throws IOException {

    BufferedReader reader = new BufferedReader(new FileReader(fileName));
    String line;
    while((line = reader.readLine()) != null) {

        if(line.equals("Movies")) {
            while (!(line.equals("Theaters"))) {
                String currentline = line;
                String[] parts = currentline.split(":");
                String part1 = parts[0]; 
                String part2 = parts[1]; 
                movies.add(new Movie(part1, part2));
            }
        }
        // do basic string comparisons here
        if(line.equals("...")) {
            // do something
        }
        else if(line.contains(":")) {
            // most likely of type A:100, B:50
        }
        else if(line.equals("End")) {
            // do something
        }
        else {
            // anything else
        }
    }
    reader.close();
}

}

1 个答案:

答案 0 :(得分:1)

这是一个示例程序,它将逐行读取文件,并有一些方案来确定我们正在查看的行类型。我很懒,抛出了可能在代码中抛出的IOExceptions - 你应该从不这样做,而是修改程序以使用try catch。

import java.io.*;

public class tmp {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("file.txt"));
        String line;

        while((line = br.readLine()) != null) {
            // do basic string comparisons here
            if(line.equals("...")) {
                // do something
            }
            else if(line.contains(":")) {
                // most likely of type A:100, B:50
            }
            else if(line.equals("End")) {
                // do something
            }
            else {
                // anything else
            }
        }
        br.close();
    }
}