954,536 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

NullPointerException problem T_T

I'm trying to read a file which contains:
Dante
Beatrice
3
5
and put them into an array. Then I will assign the values of each member of the array to static variables. when i run the main class of my project, it throws a NullPointerException starting from the line in bold T_T i dunno what to do T_T

can anyone please please help me? i badly need this for my project T_T

public static void loadPositions(){
          try{
             BufferedReader loadPlayerPositions = new BufferedReader(new FileReader("/media/KEI-SAMA/CS11/JOKE CS11/KnowGoMilestone5/playerpositions.txt"));

             String info[] = new String[3];
             
             for (int l = 0; l < info.length; l++){
             info[l] = loadPlayerPositions.readLine();

            <strong> info[0] = Players.nameOfPlayer1.toString();</strong>
             info[1] = Players.nameOfPlayer2.toString();
             info[2] = Players.loadplayer1currentblock;
             info[3] = Players.loadplayer2currentblock;
keicola
Newbie Poster
12 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
 

For reading lined from a file:

try{
             BufferedReader loadPlayerPositions = new BufferedReader(new FileReader("/media/KEI-SAMA/CS11/JOKE CS11/KnowGoMilestone5/playerpositions.txt"));

String line = loadPlayerPositions.readLine();
while (<strong>line!=null</strong>) {
  System.out.println("Line read: "+line);

   <strong>line = loadPlayerPositions.readLine();</strong>
}
} catch (Exception e) {
  System.out.println("Exception: "+e.getMessage());
}


With that way you read each line.
Do some checking in case the file doesn't have all 4 lines that you want.
You get the exception at that line: info[0] = Players.nameOfPlayer1.toString(); probably becausePlayers.nameOfPlayer1 is null

javaAddict
Nearly a Senior Poster
Team Colleague
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
 

In addition to your current problem you are bordering on ArrayIndexOutOfBounds Exception with this line of code

info[3] = Players.loadplayer2currentblock;


. your array was initialised with a size of 3 and you are quering fo the 4th item in the array.

Either you change your array size to 4 or do not request for the 4th item

ejosiah
Junior Poster
188 posts since Feb 2008
Reputation Points: 72
Solved Threads: 23
 

javaAddict and ejosiah, thanks for your help!! :]
i've initialized the variables,
i've increased the array size to 4,
now it throws the IOException T_T

keicola
Newbie Poster
12 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
 

Put a e.printstacktrace at the catch block, post your new code with the errors that you get

javaAddict
Nearly a Senior Poster
Team Colleague
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
 

I tried putting e.printStackTrace() but it didn't accept it saying that "void" cannot be used. When i checked, printStackTrace() was "void" after all. I tried using getMessage() and I got a message saying "Stream closed" when I tried running the program again.

catch (IOException e){
               JOptionPane.showMessageDialog(null, "IOException: " +  
               e.getMessage());
}
Attachments Screenshot.png 113.35KB
keicola
Newbie Poster
12 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
 

I tried putting e.printStackTrace() but it didn't accept it saying that "void" cannot be used. When i checked, printStackTrace() was "void" after all. I tried using getMessage() and I got a message saying "Stream closed" when I tried running the program again.

catch (IOException e){
               JOptionPane.showMessageDialog(null, "IOException: " +  
               e.getMessage());
}
catch (IOException e){
    System.out.println(e.getMessage()); //returns String

               JOptionPane.showMessageDialog(null, "IOException: " +  
               e.getMessage());

   e.printStackTrace(); // is void
}
javaAddict
Nearly a Senior Poster
Team Colleague
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
 

I added e.printStackTrace just as you have instructed. After running the program, the IOException points to the line in bold. This were the lines that appeared at the bottom tab:

java.io.IOException: Stream closed
at java.io.BufferedReader.ensureOpen(BufferedReader.java:97)
at java.io.BufferedReader.readLine(BufferedReader.java:292)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at knowgomilestone4.StateOfGame.loadPositions
(StateOfGame.java:67)
at knowgomilestone4.StoryLine.mainMenu(StoryLine.java:64)
at knowgomilestone4.PlayEngine.main(PlayEngine.java:37)

StateOfGame.loadPositions is the method below
Storyline.mainMenu and PlayEngine.main are methods that call on StateOfGame.loadPositions so I think the problem may only be in the StateOfGame.loadPositions method.

public static void loadPositions(){
          try{
             BufferedReader loadPlayerPositions = new BufferedReader(new 
             FileReader("/media/KEI-SAMA/CS11/JOKE CS11/KnowGoMilestone5
             /playerpositions.txt"));
             
             String info[] = new String[4];
             
             for (int l = 0; l < info.length; l++){
            <strong> info[l] = loadPlayerPositions.readLine();</strong>

             info[0] = Players.nameOfPlayer1.toString();
             info[1] = Players.nameOfPlayer2.toString();
             info[2] = Players.loadplayer1currentblock;
             info[3] = Players.loadplayer2currentblock;

             Players.loadCurrentPositions();
             Players.currentPositions();

             loadPlayerPositions.close();

             }

          } catch (FileNotFoundException e){
               JOptionPane.showMessageDialog(null, "File Not Found! :O");
          } catch (IOException e){
               JOptionPane.showMessageDialog(null, "IOException: " + e.getMessage());
               e.printStackTrace();
          }
keicola
Newbie Poster
12 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
 
for (int l = 0; l < info.length; l++){
             info[l] = loadPlayerPositions.readLine();

             info[0] = Players.nameOfPlayer1.toString();
             info[1] = Players.nameOfPlayer2.toString();
             info[2] = Players.loadplayer1currentblock;
             info[3] = Players.loadplayer2currentblock;

             Players.loadCurrentPositions();
             Players.currentPositions();

             <strong>loadPlayerPositions.close();</strong>

       }


You are inside the loop, you close the BufferedReader and when the loop runs again you try to read from aclosed BufferedReader. When you close the BufferedReader you cannot read from it again. Close it after you are done reading.
Also I believe that you should check if the line read:
info[l] = loadPlayerPositions.readLine();
is not null in case the file has less than 4 line

javaAddict
Nearly a Senior Poster
Team Colleague
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
 

Gaaah. No wonder xd
thank you thank you so much!! :]

keicola
Newbie Poster
12 posts since Sep 2009
Reputation Points: 10
Solved Threads: 0
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: