有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我希望将文件的内容按行拆分为ArrayList,并在正确的标识符下重新构建它们

以下是我正在阅读的文件内容,以尝试完成任务:

1A STD true false false 23.50 free
1B STD false true false 23.50 free
1D STD true true false 27.50 free
2A STD true false true 24.50 free
2B STD false true true 24.50 free
2D STD true true true 28.50 free
3A STD true false true 24.50 free
3B STD false true true 24.50 free
3D STD true true true 28.50 free
4A STD true false false 23.50 free
4B STD false true false 23.50 free
4D STD true true false 27.50 free
5A 1ST true true true 48.50 free
5C 1ST false true true 44.50 free
5D 1ST true false true 44.50 free
6A 1ST true true true 48.50 free
6C 1ST false true true 44.50 free
6D 1ST true false true 44.50 free

现在,我的目标是将所有这些行存储到单独的数组列表中,例如arrayList1将分配给一个包含文本文件第一行内容的值,然后将这些值分开,并提供正确的数据类型,例如:

  • 1A是一根绳子
  • true/false语句被分配给布尔值

然后在此之后重新构建文件,但内容并不是全部分配到一种数据类型(如字符串)下,而是分配给它们自己的唯一类型

int option;
File Seats = new File("seats.txt");

Scanner in = new Scanner(new FileReader(Seats));
String str;
ArrayList<String> list = new ArrayList<String>();
while(in.hasNextLine) { 

}

到目前为止,我所做的一切都是尝试的,但每当我将任何内容放入while循环时,都会收到一个错误


共 (1) 个答案

  1. # 1 楼答案

    我想您需要的是一个Seat类,它代表一个座位:

    private static class Seat {
        private String seatNumber, seatClass;
        private boolean nearWindow, nearAisle, hasTable;
        private double seatPrice;
        private String email;
    
        private Seat(String seatNumber, String seatClass, boolean nearWindow, boolean nearAisle, boolean hasTable, double seatPrice, String email) {
            this.seatNumber = seatNumber;
            this.seatClass = seatClass;
            this.nearWindow = nearWindow;
            this.nearAisle = nearAisle;
            this.hasTable = hasTable;
            this.seatPrice = seatPrice;
            this.email = email;
        }
    }
    

    然后,您可以将文件中的每一行映射到Seat对象,例如:

    List<Seat> list = new ArrayList<>();
    String[] strSplit;
    Seat seat;
    while(in.hasNextLine()) {
        strSplit = in.nextLine().split(" ");
        seat = new Seat(strSplit[0],
                strSplit[1],
                Boolean.parseBoolean(strSplit[2]),
                Boolean.parseBoolean(strSplit[3]),
                Boolean.parseBoolean(strSplit[4]),
                Double.parseDouble(strSplit[5]),
                strSplit[6]
        );
        list.add(seat);
    }
    

    另一方面,通过对象的接口引用对象被认为是最佳实践,例如:List<String> list = new ArrayList<>();而不是ArrayList<String> list = new ArrayList<String>();