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

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

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 ([B]line!=null[/B]) {
  System.out.println("Line read: "+line);

   [B]line = loadPlayerPositions.readLine();[/B]
}
} 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 because Players.nameOfPlayer1 is null

Edited 7 Years Ago by javaAddict: n/a

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

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

Edited 7 Years Ago by keicola: n/a

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

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
}

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++){
            [B] info[l] = loadPlayerPositions.readLine();[/B]

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

             [B]loadPlayerPositions.close();[/B]

       }

You are inside the loop, you close the BufferedReader and when the loop runs again you try to read from a closed 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

This question has already been answered. Start a new discussion instead.