我正在尝试用Java中的scanner读取文件。当我运行下面这段代码时,我得到了以下输出和错误。
Exception in thread "main" java.lang.NullPointerException at PageRank$ReadInput.ReadFile(PageRank.java:29) at PageRank.main(PageRank.java:58)
请帮我修复这个错误。
public class PageRank{
public static class ReadInput{
private Scanner x;
public void OpenFile(){
try {
File file = new File("input.txt");
Scanner x=new Scanner(file);
}
catch(Exception e){
System.out.println("File does not exist.");
}
}
public void ReadFile() {
while (x.hasNextLine() ) {
String s = x.nextLine();
System.out.println(s);
String s1 = x.nextLine();
String s2 = x.nextLine();
System.out.println(s);
System.out.println(s1);
System.out.println(s2);
}
}
}
public static void main(String[] args)throws Exception
{
ReadInput P = new ReadInput();
P.OpenFile();
P.ReadFile();
}
}
发布于 2018-06-11 06:25:10
在OpenFile()中,在try块内,您必须删除
Scanner x=new Scanner(file);
并将其保留为
x=new Scanner(file);
说明:
在您的代码中,当您编写
Scanner x=new Scanner(file);
在try块中,您正在创建一个新变量,但其名称与您在
private Scanner x;
现在你将有两个名为'x‘的扫描器变量。在try语句中,您正在初始化该块中的一个,但它只存在于那里,所以一旦您离开try块,它就会被销毁。
现在回到ReadFile()函数,您调用的是x.hasNextLine(),,但是这个'x‘是您在开头声明的那个,而不是ReadFile语句中的那个,所以它仍然没有初始化。
https://stackoverflow.com/questions/50788557
复制相似问题