我需要帮助这个学校的课程。我已经在几天内收到此错误,并且不知道问题出在哪里。我正在从文件中读取信息,出于某种原因,我收到以下错误:
好的,所以我的代码中一直出现以下错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at EmployeeWithFiles.readInputFile(EmployeeWithFiles.java:22)
at CompanyWithFilesDemo.main(CompanyWithFilesDemo.java:28)
我知道错误在readInputFile中......这是我读取输入的方法:
public void readInputFile(Scanner inputStream)
{
setFirstName(inputStream.nextLine());
setLastName(inputStream.nextLine());
setNumberOfDependents(inputStream.nextInt());
setHourlyRate(inputStream.nextDouble());
setHoursWorked(inputStream.nextDouble());
setLocalTaxWithheldToDate(inputStream.nextDouble());
setFederalTaxWithheldToDate(inputStream.nextDouble());
setStateTaxWithheldToDate(inputStream.nextDouble());
}
这是我的输入文件:
jim
jackson
3
14.50
55.50
515.00
6010.00
2163.00
jim
jackson
3
14.50
55.50
515.00
6010.00
2163.00
jim
jackson
3
14.50
55.50
515.00
6010.00
2163.00
答案 0 :(得分:1)
我几乎肯定问题是nextInt
或nextDouble
中的一个没有进入下一行。所以在某些时候你可能会尝试读取一个双字符串,反之亦然。这就是InputMismatchException
发生的地方。
您可以通过逐行阅读和必要时解析来避免此问题。让生活更轻松。
setNumberOfDependents(Integer.parseInt(inputStream.nextLine().trim()));
setHourlyRate(Double.parseDouble(inputStream.nextLine().trim()));
...