首页 > 解决方案 > 从 .txt 文件中读取数据并创建对象数组

问题描述

我需要一些帮助:我正在用 java 进行飞行名册模拟。名册将容纳 25 名乘客,其中 22 名来自文本文件 (PassengerList.txt)。对于每位乘客,需要 3 个数据点;姓名、座位等级和座位号以及 2 个可选数据点常旅客编号和常旅客积分。每个乘客都在自己的行上,每个数据点用逗号分隔。例如:

Allen George,Economy Class,8A,#GEO456,10000
Judy Hellman,Economy Class,8B

到目前为止,我有这个类以及构造函数:

public class Passengers
{

  private String name, type, seat, flyernum;
  private int points;

  //Constructor to intialize the instance data
  Passengers(String full_name, String seat_type, String seat_number,
  String frequent_flyer_number, int frequent_flyer_points) 
  { 
    name=full_name;
    type=seat_type;
    seat=seat_number;
    flyernum=frequent_flyer_number;
    points=frequent_flyer_points;
  } //end Passengers 

我需要做的是从文本文件中读取每一行并创建数组,即使第一行看起来像这样:

Passenger passenger1 = new Passenger ("Allen George","Economy Class","8A" 
,"#GEO456",10000)

进入这样的数组:

Passenger[0] = passenger1;

我显然是一个 java 初学者,但我已经被这个问题困扰了很长时间,当我尝试新的东西时,我不断收到不同的错误消息。我一直在使用扫描仪来读取文件。文本文件不需要被覆盖,只需由程序读取和扫描即可。也只能使用数组,ArrayList 是不行的。也只有两个文件,Passengers 类和 main 方法。请帮忙!谢谢!

标签: javaarrays

解决方案


使用这个 main 方法从文本文件中读取数据并将数据聚合到Passengers 对象中。乘客列表对象中的整个乘客列表。

public static void main(String[] args) {
    List<Passengers> passengersList = new ArrayList<Passengers>();
    File file = new File("Your file location..");
    try {
        BufferedReader br = new BufferedReader(new FileReader(file));
        String st;
        while ((st = br.readLine()) != null){
            String[] data = st.split(",");
            String flyNumber = null;
            int flyPoints = 0;
            switch (data.length){
                case 4: flyNumber = data[3];
                    break;
                case 5: flyNumber = data[3];
                    flyPoints = Integer.valueOf(data[4]);
                    break;
            }
            Passengers passenger = new Passengers(data[0], data[1], data[2], flyNumber, flyPoints);
            passengersList.add(passenger);
        }
        System.out.println(passengersList.get(0));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

推荐阅读