2

这是我到目前为止所拥有的......

/**
 * @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
4

2 回答 2

1

问题发生是因为您调用scan.nextInt()但您的输入文件实际上包含字符串/字符。

在输入文件顶部添加指示行数的整数,或更改按行读取的代码(例如:使用BufferredReader.readLine()

如果您选择前者,请确保您还使用两次调用读取名字和姓氏scan.next()

于 2013-04-15T01:22:41.977 回答
0

您正在读取文件中的整数,但该文件很可能充满了字符串或字符。

编辑:尝试扫描行或字符,或者仅使用 FileInputStream,然后在加载数据后解析数据。

编辑:既然我已经看到了您的数据文件,我将使用标准文件输入实践读取文件(如果您需要教程,请查看http://www.javapractices.com/topic/TopicAction.do?Id=42在那)。然后根据空格拆分字符串,并遍历新字符串数组中的每个字符串并处理数据。前 2 个字符串是名称,然后是整数,直到您获得另一个名称或字符串的结尾。

于 2013-04-15T01:19:08.057 回答