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

时间:2015-03-03 14:50:01

标签: java parsing arraylist exception-handling polymorphism

我设计了一个程序,从两个文本文件文档中读取信息(客户和课程),并将它们放入各自的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");

请注意客户名称"琼斯"放在数据字符串的末尾,以便我知道哪个课程归哪个客户所有。

客户数据如下所示:

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方法也位于我的测试用例中,该方法读取文件,使用数据创建课程,最后将课程添加到各自/正确的客户。我利用第二个名为courseList的ArrayList来实现这一目标。

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

我在此计划中还有其他7个班级:日期,时间,客户,课程,OnLineCourse,InClassCourse,Invoice(界面)。

在向客户加载其各自的客户后,名为generateInvoice的方法调用类createInvoice中的方法customer,该方法计算每个客户的发票,最后将其打印到dialog box 1}}标题下的名称,帐户和总计

我的问题是我不知道如何从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块

1 个答案:

答案 0 :(得分:1)

首先,如果您有FileNotFoundException,则必须确保“customer.txt”文件位于正确的位置...

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

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

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

如果是这个意图,

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

  • 或者您希望更新 Customer中的customerList bean实例。但在这种情况下,您无需添加任何内容。您只需要获取每个bean实例,设置属性并继续。在函数结束时,customerList将被更新。