将指定格式的文件读入ArrayList

发布于 2024-10-03 10:14:19 字数 387 浏览 4 评论 0 原文

我有具有以下特定格式的文件:

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 = 转换表
  • 第 1 行 = 第 2 行中的状态
  • = 状态输出
  • A,B = 符号

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

I have file with this specific format:

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  
  • line 1 = start state
  • line 2 = accept state
  • line 3 - n = transition table
  • 1st row = state in
  • 2nd row = state out
  • A,B = symbol

How can my FileReader in Java read these file into 5 different ArrayLists (start state, final state, state in, state out and symbol)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

百合的盛世恋 2024-10-10 10:14:19

最好在此处使用 扫描仪 :

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...
}

It's best to use a Scanner here:

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...
}
金兰素衣 2024-10-10 10:14:19

您可以使用 Scanner 类来读取文件(nextLine () 强烈推荐)。由于您知道所需项目的位置,因此可以使用 split 方法来解析您喜欢的 ArrayList 中的输入字符串。

You can use the Scanner class to read the file (nextLine() is highly recommended). Since you know the positions of the items you need, you can then use the split method to parse the input string in what ever ArrayList you like.

寄风 2024-10-10 10:14:19

看一下 StringTokenizer,使用 < code>ArrayLists 来构建您的列表。

Have a look at the StringTokenizer, use ArrayLists to build up your lists.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文