将特定格式的文件读入ArrayList

时间:2010-11-21 12:37:38

标签: java arraylist filereader

我有这种特定格式的文件:

0  
2 4   
0 1 A  
0 5 B  
1 1 A  
1 3 B  
2 6 A  
2 4 B  
3 6 A  
3 4 B  
4 6 A  
4 4 B  
5 1 A  
5 5 B  
6 6 A  
6 2 B  
  • 第1行=开始状态
  • 第2行=接受状态
  • 第3行 - n =转换表
  • 第一行=
  • 中的状态
  • 第二行=陈述
  • A,B =符号

我的FileReader如何将这些文件读入5个不同的ArrayList(开始状态,最终状态,状态输入,状态输出和符号)?

3 个答案:

答案 0 :(得分:3)

最好在这里使用Scanner

static class State {
    int in;
    int out;
    String symbol;

    State(int in, int out, String symbol) {
        this.in = in;
        this.out = out;
        this.symbol = symbol;
    }

    @Override
    public String toString() {
        return in + " " + out + " " + symbol;
    }
}

public static void main(String[] args) throws FileNotFoundException {

    Scanner s = new Scanner(new File("input.txt"));

    int startState = Integer.parseInt(s.nextLine());
    List<Integer> acceptStates = new LinkedList<Integer>();
    List<State> states = new LinkedList<State>();

    Scanner st = new Scanner(s.nextLine());
    while (st.hasNextInt())
        acceptStates.add(st.nextInt());

    while (s.hasNextInt())
        states.add(new State(s.nextInt(), s.nextInt(), s.next()));

    System.out.println(startState);
    System.out.println(acceptStates);
    System.out.println(states);

    // logic...
}

答案 1 :(得分:1)

您可以使用Scanner类来读取文件(nextLine() is highly recommended)。既然您知道了所需项目的位置,那么可以使用split方法在您喜欢的ArrayList中解析输入字符串。

答案 2 :(得分:0)

查看StringTokenizer,使用ArrayList来构建列表。