尝试从.dat文件读取错误

时间:2014-09-15 19:33:40

标签: java read-write

从.dat文件中读取错误时出错。 .dat文件设置如下:

<Name>/<age>

我使用/作为分隔符。 我试图从文件中读取以读取名称和年龄,但它出现了这个错误:

Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Scanner.java:819)
        at java.util.Scanner.next(Scanner.java:1431)
        at java.util.Scanner.nextInt(Scanner.java:2040)
        at java.util.Scanner.nextInt(Scanner.java:2000)
        at Lab04a.input(Lab04a.java:26)
        at Lab04a.main(Lab04a.java:18)
Java Result: 1

有问题的方法是:

public void input() {
        try {
            File dat = new File("Lab04a.dat");
            Scanner sc = new Scanner(dat).useDelimiter("/");
            String name = sc.next();
            int age = sc.nextInt();
            Lab.process(name, age);
        }
        catch(FileNotFoundException e) {
            System.out.println("Missing or corrupted data file.");
            System.exit(0);
        }
    }

给出错误的行是第26行和第18行,这些是行:

第18行:

Lab.input();

第26行:

int age = sc.nextInt();

第18行不会有任何错误,因为它只调用有问题的方法。 第26行是(我的最佳猜测)发生错误的地方。

2 个答案:

答案 0 :(得分:0)

该行

int age = sc.nextInt();


如果下一个标记与整数正则表达式不匹配或超出范围,则可以为您提供InputMismatchException

答案 1 :(得分:0)

试试这个

Scanner sc = new Scanner(dat).useDelimiter("\\/");

修改

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

/**
 * @author Davide
 */
public class test {
    static Map map;

    public static void main(String[] args) {
        // init value
        input();
    }


    public static void input() {
        try {
            File dat = new File("test.dat");
            Scanner sc = new Scanner(dat).useDelimiter("\\/");
            String name = sc.next();
            int age = sc.nextInt();
            System.out.println(name + " " + age);
        }
        catch(FileNotFoundException e) {
            System.out.println("Missing or corrupted data file.");
            System.exit(0);
        }
    }

}

dat文件

ciao/56

<强>更新

try {
    // ...
} catch (InputMismatchException e) {
    sc.next(); 
}