Java 导致此错误消息的原因是什么?

Java 导致此错误消息的原因是什么?,java,Java,这是我的代码,注释总结了程序应该做什么 //此程序将从文件中读入一个数字,该数字表示有多少个 //文件中包含的工资和工时。然后计算 //薪水 导入java.util.*; 导入java.text.*; 公共类Lab10 { 公共静态void main(字符串[]args) { //声明变量 扫描仪扫描=新扫描仪(System.in); DecimalFormat fmt=新的DecimalFormat(“0.00”); 字符串名; 双倍工资; 工作两小时; 双薪; int数值计算; 国际雇员人数

这是我的代码,注释总结了程序应该做什么

//此程序将从文件中读入一个数字,该数字表示有多少个
//文件中包含的工资和工时。然后计算
//薪水
导入java.util.*;
导入java.text.*;
公共类Lab10
{
公共静态void main(字符串[]args)
{
//声明变量
扫描仪扫描=新扫描仪(System.in);
DecimalFormat fmt=新的DecimalFormat(“0.00”);
字符串名;
双倍工资;
工作两小时;
双薪;
int数值计算;
国际雇员人数;
int i=0;
//读入文件包含的员工人数
EmployeeNumber=scan.nextInt();
//for循环,读取并记录名称hoursworked和工资,并打印出信息
对于(;i加班时间)
{
工资=(工作小时数-加班时间)*工资*加班次数+工作小时数*工资;
}
其他的
{
工资=工作小时数*工资;
}
//还工资
返回工资;
}//计算结束报警方法
}//Lab10类结束
使用此输入文件时:

3
Smith 12.50 25
Jones 25.89 60
Brown 7.86 19.89
我得到了我想要的输出,但最后附加了以下信息:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:855)
    at java.util.Scanner.next(Scanner.java:1364)
    at Lab10.main(Lab10.java:32)

有人能告诉我这意味着什么以及如何修复它吗?

您循环一次太多了

您有3名员工,应该这样循环:

for ( ; i < EmployeeNumber; i ++ )
{
    name = scan.next () ;
    ...
 }
(;i { name=scan.next(); ... }
Java的数组索引从0开始,因此如果您有3个元素,它们分别存储在0、1和2。正如上面在for循环中所说的,如果您只需要输入i就够了,谢谢。现在可以用了