这就是我到目前为止所做的......
/**
* @param args
*/
public static void main(String[] args) {
final String DATA_FILE = "payroll_problem.txt";
Scanner scan = null;
try
{
scan = new Scanner(new File(DATA_FILE));
}
catch (FileNotFoundException e)
{
System.err.printf("Could not open file \"%s\".\n", DATA_FILE);
}
int [] arr = new int[scan.nextInt()];
for(int i = 0; i < arr.length; i++)
{
arr[i] = scan.nextInt();
System.out.print(arr[i]);
}
scan.close();
}
我一直收到错误代码
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at fvse.main(fvse.java:22)
五个整数代表这个人从周一到周五工作了多少小时。这是数据文件。
Mohnan Maria 8 8 8 9 8 10.01
Blue Shelly 8 10 8 8 6 10.00
Black 8 8 8 8 8 23.0
Fortuna Jorge 5 5 5 5 5 10.10
Jones Mitchel 10 5.5 10 10 10 15.05
Olafson Sven 10 10 10 10 10 10.00
Cruz Astrid 1 1 1 1 1 20.50.3
Adler Irene 10 12 8 8 8 22.50
答案 0 :(得分:1)
问题发生的原因是您调用了scan.nextInt()
但输入文件实际上包含字符串/字符。
添加指示输入文件顶部行数的整数,或者逐行更改代码(例如:使用BufferredReader.readLine()
)
如果您选择前者,请确保您还使用两次scan.next()
答案 1 :(得分:0)
您正在读取整数文件,但很可能该文件中填充了字符串或字符。
编辑:尝试扫描行或字符,或者只使用FileInputStream,然后在加载数据后解析数据。
编辑:现在我已经看过您的数据文件,我会使用标准文件输入实践读取文件(如果您需要相关教程,请查看http://www.javapractices.com/topic/TopicAction.do?Id=42)。然后根据空格拆分字符串,并遍历新字符串数组中的每个字符串并处理数据。前两个字符串是名称,然后是整数,直到你得到另一个名字或字符串的结尾。