gpt4 book ai didi

java - 解析文本文件中的输入

转载 作者:行者123 更新时间:2023-12-01 04:22:07 24 4
gpt4 key购买 nike

我有一个包含员工信息的文本文件。第一个单词是员工的姓氏,第二个单词是名字。字符代码 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,以至少查看它是否正确分配了姓氏和名字,但它甚至没有正确执行此操作。它使用了错误的行来分配值,并将名字分配为姓氏,将姓氏分配为名字。

Harry, Potter,  $1.0/hour

所以我的问题是,我该如何正确地做到这一点?根据我提供的文本文件,我想使用这些参数创建一个 HourlyEmployee 对象

HourlyEmployee Employee1 = new HourlyEmployee(Smith,John,5.00);

最佳答案

两个明显的问题:

由于您是按顺序读取文件的,因此您首先读入的是姓氏;但您的 HourlyEmployee 需要的第一个参数是名字。其次,您第三次尝试读取该文件将最终读取“h”或“s”标志,而不是工资。解决办法:分别读入名称,然后调用函数。像这样的事情:

while(in.hasNextLine()) {
lastName = in.next();
firstName = in.next();
payType = in.next(); // read the 'h' or 's'
pay = in.nextDouble();
switch(payType) {
case 'h':
Employee1 = new HourlyEmployee(firstName, lastName, pay);
break;
case 's':
Employee1 = new SalariedEmployee(firstName, lastName, pay);
break;
default:
// warn about invalid format
}
System.out.println(Employee1);
}

您可能需要删除 lastName 变量中的逗号 - 不确定您的函数是否已经处理了这个问题。

关于java - 解析文本文件中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18805390/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com