0

I am trying to read a file using scanner in Java. I get the following output and error when I run the below piece of code.

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

Please help me fix this error.

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();
      }

}

1

1 Answer 1

1

In OpenFile(), inside the try block, you have to remove the 'Scanner' in

Scanner x=new Scanner(file);

and leave it as

x=new Scanner(file);

Explanation:

In your code, when you write

Scanner x=new Scanner(file);

inside the try block, you are creating a new variable but with the same name as the one you declared at the beginning of the class at

private Scanner x;

Now you would have two Scanner variables named 'x'. Inside the try statement, you are initializing the one inside that block, but it only exists there, so as soon you leave the try block it gets destroyed.

Now back to the ReadFile() function, you are calling x.hasNextLine(), but this 'x' is the one you declared at the beginning, not the one inside the try statement, so it is still uninitialized.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks. This worked. Could you please elaborate why are both different?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.