首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >读取文件时Java中出现空指针异常

读取文件时Java中出现空指针异常
EN

Stack Overflow用户
提问于 2018-06-11 06:20:29
回答 1查看 677关注 0票数 0

我正在尝试用Java中的scanner读取文件。当我运行下面这段代码时,我得到了以下输出和错误。

Exception in thread "main" java.lang.NullPointerException at PageRank$ReadInput.ReadFile(PageRank.java:29) at PageRank.main(PageRank.java:58)

请帮我修复这个错误。

代码语言:javascript
复制
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();
      }

}

EN

回答 1

Stack Overflow用户

发布于 2018-06-11 06:25:10

在OpenFile()中,在try块内,您必须删除

代码语言:javascript
复制
Scanner x=new Scanner(file);

并将其保留为

代码语言:javascript
复制
x=new Scanner(file);

说明:

在您的代码中,当您编写

代码语言:javascript
复制
Scanner x=new Scanner(file);

在try块中,您正在创建一个新变量,但其名称与您在

代码语言:javascript
复制
private Scanner x;

现在你将有两个名为'x‘的扫描器变量。在try语句中,您正在初始化该块中的一个,但它只存在于那里,所以一旦您离开try块,它就会被销毁。

现在回到ReadFile()函数,您调用的是x.hasNextLine(),,但是这个'x‘是您在开头声明的那个,而不是ReadFile语句中的那个,所以它仍然没有初始化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档