【发布时间】:2013-09-14 19:07:27
【问题描述】:
我有一个包含员工信息的文本文件。第一个单词是员工的姓氏,第二个单词是名字。字符代码 h 或 s 告诉我他们是什么类型的员工,有薪或按小时计酬。最后,字符代码后面的数字是小时工资(如果是小时工)或年薪(如果是受薪员工)。
Smith, John h 5.00
Potter, Harry s 10000
我想要对这些信息执行的操作是扫描文本文件以根据识别的字符代码自动创建新的受薪员工对象或小时工对象。
这些是每小时雇员对象的参数。
public HourlyEmployee(String first, String last, double wage)
这是我想出来的。
File input = new File("EmployeesIn.txt");
Scanner in = new Scanner(input);
while(in.hasNextLine()) {
int i = 1;
String line =(in.nextLine());
if (line.contains(" h ")) {
HourlyEmployee Employee1 = new HourlyEmployee(in.next(),in.next(),in.nextDouble());
System.out.println(Employee1);
这段代码的问题是我从 in.nextDouble(); 中得到了 InputMismatchException。
所以我编辑了我的代码以手动将工资分配给 1,以至少查看它是否正确分配了姓氏和名字,但它甚至没有正确执行。它使用错误的行来分配值,并将 First Name 分配为 last name,将 Last Name 作为 first name。
Harry, Potter, $1.0/hour
所以我的问题是,我该如何正确地做到这一点?根据我提供的文本文件,我想使用这些参数创建一个 HourlyEmployee 对象
HourlyEmployee Employee1 = new HourlyEmployee(Smith,John,5.00);
【问题讨论】:
-
也许您应该考虑在文本文件中包含分隔符,例如
;或#,并使用 FileReader 而不是扫描仪,并使用split()或StringTokenizer方法来标记行 -
我认为您可能会在“h”上调用
in.nextDouble()。还请记住,逗号将被捕获并成为名称的一部分(即“Smith”的姓氏)
标签: java parsing filereader