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