NullPointerException - 读取非空文件返回Null

时间:2015-10-20 09:45:02

标签: java nullpointerexception

我对编程很新,我想学习如何从文件中读取数据。我观看了这段视频,并试图将这个想法复制到我自己的目的。 https://www.youtube.com/watch?v=3RNYUKxAgmw

每当我尝试运行main时,它会显示Error Line 22 - NullPointerException。我有一个带有数字的文本文件,我检查了名称是否匹配。我根本不明白为什么它说我的文件是空的。

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

public class ReadFile {

    private Scanner x;
    public void openFile () {
        try {
            x = new Scanner (new File("gradeconverter.txt"));
        } catch(FileNotFoundException e){
            System.out.println("File not found.");
        }
    }

    public void readFile() {
        Scanner input = new Scanner(System.in);
        System.out.print("Insert old grade ");
        int grade = input.nextInt();
        input.close();

    // line 22 
    while(x.hasNextInt()) {
        int a = x.nextInt();
        int b = x.nextInt();
        if ( a == grade) {
            System.out.println("Your new grade is: "+b);
        }
    }
}

public void closeFile() {
    x.close();
}
}

3 个答案:

答案 0 :(得分:0)

我想这是因为你曾经指定过文件的路径

如果您正在使用pc / latop硬盘中的文件,请提供完整的路径

x = new Scanner (new File("C://newfolder//gradeconverter.txt"));// just an example, add the actual path of you files location

答案 1 :(得分:0)

在第一次int a = x.nextInt()调用另一个int b = x.nextInt();后,可能会发生x扫描程序没有更多要返回的数据。您需要在每次调用x.hasNextInt()方法之前检查x.nextInt()

答案 2 :(得分:0)

你能简单地使用java 8"方式"

Files.lines(Paths.get(FILE_PATH)).forEach(System.out::print);

PS:您忘记打开Scanner - > X