扫描程序的NullPointerException

0 java nullpointerexception java.util.scanner

我在第5行收到NullPointerException.我不确定为什么或如何解决它...

    public static Scanner getInputScanner(Scanner console){
    Scanner inputFile = new Scanner(System.in);
    Scanner file = null;
    String userInputFile = null;
    while (file.equals(null)) {
        try {
            System.out.print("Enter input file: ");
            userInputFile = inputFile.nextLine();
            file = new Scanner(new File(userInputFile));
        } catch (FileNotFoundException e) {
            System.out.print(userInputFile + " (No such file or directory)");
            file = null;
            return file;
        }
    }
    return file;
}
Run Code Online (Sandbox Code Playgroud)

有什么指针吗?

das*_*ght 6

虽然您通常使用比较Java对象equals的方法,null比较是一个明显的例外:没有Java Object比较equalnull- Java类需要满足此要求:

对于任何非空引用值x,x.equals(null)应返回false.

而且,首先filenull,所以调用它上面的任何方法,包括equals,都将导致NPE.

因此,您需要使用引用相等:

while (file == null) {
    ...
}
Run Code Online (Sandbox Code Playgroud)