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)

5 つの整数は、その人が月曜から金曜までに何時間働いたかを表します。こちらがデータファイルです。

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())

前者を選択した場合は、次の 2 つの呼び出しを使用して姓名も読み上げるようにしてください。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 に答える