使用扫描仪读取文件时出现异常

Getting exception while reading from a file using Scanner

我正在尝试获取一个程序来读取文本文件的内容,将每一行存储在一个数组中,然后以有序的方式为每种类型输出结果。我有排序的部分,但每次我 运行 主程序时,我都会收到 try/catch 的错误消息(这仍在进行中)

package p20;
import java.io.*;
import java.util.*;

public class EmployeeOrderingDemo {

public static void main(String[] args)  {
    Scanner input=null;
    ArrayList<EmployeeFX> employeeList=new ArrayList<EmployeeFX>();
    try {
        FileReader Info=new FileReader("P01_DATA.txt");
        input=new Scanner(Info).useDelimiter("\s\s+");
    }
    catch(FileNotFoundException noFile) {
        System.out.println("Can't open file");
        System.exit(1);
    }

    try {
        while(input.hasNextLine()) {
            employeeList.add(new EmployeeFX(input.nextInt(),input.next(),input.next(), input.nextBoolean(), input.nextInt()));          
            input.nextLine();
        }
    }
    catch(NoSuchElementException element) {
        System.err.println("Wrong type of file");
        System.exit(1);
    }
    catch(IllegalStateException state) {
        System.err.println("Couldn't read from file");
        System.exit(1);
    }
    if(input!=null) {
        input.close();
    }
  }
}

我在 "Wrong type of file" 收到消息。是因为我需要跳过文本文件的headers吗?

这是 EmployeeFX 代码

package p20;

public class EmployeeFX {

private int id;
private String firstName;
private String lastName;
private boolean salaried;
private double salary;

public EmployeeFX(int id, String firstName, String lastName,boolean salaried, int salary) {
    this.id=id;
    this.firstName=firstName;
    this.lastName=lastName;
    this.salaried=salaried;
    this.salary=salary;
  }
}

这是堆栈跟踪

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 p20.EmployeeOrderingDemo.main(EmployeeOrderingDemo.java:26)

这是输入文本文件

id  firstName   lastName    salaried    salary

200 Caroline    James   false   37654
2   Julian  James   false   46499
1   Conor   Habgren true    88767
10  Tillie  Donalan true    98456
15  Alice   Jeanu   true    72821
12  Fred    Habgren false   28767
103 Mary    Donalan false   28456
135 Ed  Jeanu   true    52821

为 class 的 main 方法尝试以下代码:查找内联注释。

public static void main(String[] args) {
  Scanner input=null;
  ArrayList<EmployeeFX> employeeList=new ArrayList<EmployeeFX>();
  try {
    FileReader Info=new FileReader("P01_DATA.txt");
    input=new Scanner(Info).useDelimiter("\s+");   //Single white space regex is enough.
  }
  catch(FileNotFoundException noFile) {
    System.out.println("Can't open file");
    System.exit(1);
  }

  input.nextLine();   // Ignore the first line
  input.nextLine();   // Ignore the second line

  try {
    while(input.hasNext()) {    //hasNext() will check for the next available token
      employeeList.add(new EmployeeFX(input.nextInt(),input.next(),input.next(), input.nextBoolean(), input.nextInt()));
    }  // Additional newLine() reading is not required here.
  }
  catch(NoSuchElementException element) {
    System.err.println("Wrong type of file");
    System.exit(1);
  }
  catch(IllegalStateException state) {
    System.err.println("Couldn't read from file");
    System.exit(1);
  }
  if(input!=null) {
    input.close();
  }
}