如何将 .txt 文件中的数据读入 ArrayList 以创建 objects

How to read data from a .txt file into an ArrayList to create objects

我设计了一个程序,可以从两个文本文件文档中读取信息(客户和课程)并将它们放入各自的 ArrayList 中。 例如,课程数据如下所示:

output.format("%s;%s;%s;%.2f;%s;%s;%s;%s;%b;%d;%s\r\n","Online","Java1","Davis",125.00," 1/1/2015"," 2/1/2015"," programming"," UTA ", true,12," Jones");

注意客户的名字 "Jones" 放在数据字符串的末尾,这样我就知道哪个课程去哪个客户。

客户数据如下所示:

output.format("%s;%d;%s;%s;%s;%d;%d;%s\r\n","Jones",786,"Cooper","Arlington","Texas",76019,12345,"student");

注意 customerType 放在数据字符串的末尾。

第一个文件被称为 customers.txt 我使用 readCustomers 方法,位于我的测试用例中,它读取 customers.txt 文件,使用数据创建客户,并将他们添加到名为 customerList.

的 ArrayList 中
ArrayList<Customer> customerList = new ArrayList<Customer>();

第二个文件称为 courses.txt 我使用 readCourses 方法,也位于我的测试用例中)读取文件,创建使用数据的课程,最后将课程添加到他们的 respective/correct 客户。我利用另一个名为 courseList 的 ArrayList 来实现这一点。

ArrayList<Course> courseList = new ArrayList<Course>();

我在这个程序中还有其他 7 个 classes:Date,Time,Customer,Course,OnLineCourse,InClassCourse,Invoice(interface)。

在客户加载各自的客户后,名为 generateInvoice 的方法调用 class customer 中的方法 createInvoice 计算每个客户的发票并最终打印它输出到标题 名称、帐户和总计

下的 dialog box

我的问题是我不知道如何从 customers.txt 文件创建新客户并将其添加到 customerList

我对 readCustomers 方法的尝试如下所示:

public static void readCustomers()
{
    Scanner input;
    String sentence;
    String values[];

    try
    {
        input = new Scanner(new File("customer.txt"));
        while(input.hasNext())
        {
            sentence = input.nextLine();
            values = sentence.split(";");
            for(Customer c:customerList)
            {
                if((c.getName().equals(values[9])))
                {
                  customerList.add(new Customer(values[0],createAddress(values[1]),Integer.parseInt(values[2])));                   
                }
           }  
        }    
    }

//我的程序中有一个catch块

首先,你必须确保 "customer.txt" 文件在正确的位置,如果你有 FileNotFoundException...

然后上面代码中的几件事:

  • 当我读客户专线的例子时,我统计了11个属性。我想知道你在 if((c.getName().equals(values[9]))) 中测试了什么;看起来不像客户的名字。

  • 您正在阅读列表 customerList,其中 - 此处猜测 - 包含仅设置名称的 Customer 列表,并且您想要创建 Customer bean 以及在文件中找到的附加信息。

如果这是意图,

  • 您需要创建另一个列表和add一个新的Customer实例并使用从文件中读取的属性进行初始化.函数 readCustomers() 应该 return 新的 List<Customer>.

  • 或者您想要更新 customerList 中的Customer bean 实例。但在这种情况下,您没有什么可添加到列表中的。您只需要获取每个 bean 实例,设置属性,然后继续。在函数结束时,customerList 应更新。