简体   繁体   English

Java中的InputMismatchException错误

[英]InputMismatchException Error in Java

 public static void readStaffsFromFile() {
    String inFileName = "startup.txt";
    int numStaff, staffID;
    String name, address;
    Staff newStaff;
    boolean fileExists;
    Scanner inFile = null;
    File databaseFile = new File(inFileName);

    fileExists = databaseFile.exists();

    if (fileExists) {
        try {
            inFile = new Scanner(databaseFile);
        } catch (FileNotFoundException fnfe) {
            JOptionPane.showMessageDialog(null, "The file startup.txt has just now been deleted.");
            return; // cannot do anything more.
        }

        numStaff = inFile.nextInt();
        inFile.nextLine();

        for (int i = 0; i < numStaff; i++) {
            staffID = inFile.nextInt();
            name = inFile.nextLine();
            address = inFile.nextLine();

            // try{
            newStaff = new Staff(staffID, name, address);
            addStaff(newStaff);
            // } catch (StaffException se)
            // {
            // System.out.println("Unable to add staff: " + name +
            // " to the system.");
            // }

        }

    }
    JOptionPane.showMessageDialog(null, "System has been set up with default data from startup.txt.");
}

I have this method and when I try to call this method from main, it gives me this error. 我有这个方法,当我尝试从main调用这个方法时,它给了我这个错误。

Exception in thread "main" java.util.InputMismatchException 线程“主”中的异常java.util.InputMismatchException

at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at SystemStartUp.readStaffsFromFile(SystemStartUp.java:195)
at SystemStartUp.loadFromFile(SystemStartUp.java:160)
at StartUp.main(StartUp.java:9)

The error line of error states that my error starts from the line of " staffID = inFile.nextInt(); " 错误的错误行指出,我的错误从“ staffID = inFile.nextInt(); ”行开始

The input file looks like this. 输入文件如下所示。

13

11111111

Chris Ling

999 Dandenong Road

22222222

Des Casey

100 Silly Drive

33333333

Maria Indrawan

90 Programming Road

44444444

Campbell Wilson

2/5 Database Street

55555555

Janet Fraser

21 Web Drive

66666666

Judy Sheard

34 Hos Road

77777777

Ngoc Minh

24 Message Street

88888888

Martin Atchinson

45 Martine Street

99999999

Aleisha Matthews

1/6 Admin Road

10101010

Denyse Cove

100 Reception Street

12121212

Cornelia Liou

232 Reception Road

23232323

Trudi Robinson

111 Manager Street

34343434

Henry Linger

2/4 HDR Street

Probably the staffID doesn't always contains numbers. 可能staffID并不总是包含数字。 Please check the input file. 请检查输入文件。

After staffID , you have to add inFile.nextLine(); staffID之后,您必须添加inFile.nextLine(); to consume the new line character after of the line with number. 在带数字的行之后使用新的行字符。 Otherwise, you will get the error on the second loop. 否则,您将在第二个循环中收到错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM