Java 从文本文件读取整数

Java 从文本文件读取整数,java,java.util.scanner,Java,Java.util.scanner,我试图从文本文件中读取整数,但失败了。 它甚至无法读取第一个整数 public void readFromFile(String filename) { File file = new File(filename); try { Scanner scanner = new Scanner(file); if (scanner.hasNextInt()) { int x = scanner.nextInt();

我试图从文本文件中读取整数,但失败了。 它甚至无法读取第一个整数

public void readFromFile(String filename) {
    File file = new File(filename);
    try {
        Scanner scanner = new Scanner(file);
        if (scanner.hasNextInt()) {
            int x = scanner.nextInt();
        }
        scanner.close();

    } catch (FileNotFoundException e) {
        System.out.println("File to load game was not found");
    }
}
我得到的错误是:NoTouchElementException。 该文件如下所示:

N,X1,Y1,X2,Y2,X3,Y3
readFromFile("file.txt");
而在这个例子中n等于3

我在main方法中将此方法称为a,如下所示:

N,X1,Y1,X2,Y2,X3,Y3
readFromFile("file.txt");

扫描程序使用空白作为默认分隔符。您可以使用useDelimiter进行更改,请参见此处:

我不确定您是否希望在将整数与字符串分离后仅显示整数。如果是这样,我建议您使用BufferedInputStream

    try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)))){
        String input = br.readLine();
        int count = 0;
        for(int i = 0; i < input.length()- 1; i++){
            if(isNumeric(input.charAt(i))){

                // replace the Sysout with your own logic
                   System.out.println(input.charAt(i));
                }
            }
        } catch (IOException ex){
            ex.printStackTrace();
        }
其中,isNumeric可定义如下:

private static boolean isNumeric(char val) {
    return (val >= 48 && val <=57);
}

提供的输入不存在整数,因此NOSCHELEMENTEXCEPTION…以字符串形式存在于文本文件中,与X1、Y1等一样。文本文件中不存在整数。请注意,最好插入行:“scanner.close;”进入最后一个街区。试试{}catch{},finally{scanner.close;}finally负责释放资源。我想把它作为一行读取,然后扫描字符串。但是,难道没有其他方法吗?我想到的另一个建议是设计自己的定制inputReader。但是hasNext必须要实现这一点,我觉得这可能真的是太过分了。顺便说一句,扫描仪相当慢。如果您在问题中提到的是一个示例文件输入,并且您的实际文件相当大,我建议您使用BufferedReader方法