title: java.lang.NullPointerException upon file I/O
body: <p>When I run the code, I get an error. The strange thing is when I change <code>files.getTimeScore();</code> to <code>files.getLineScore();</code>, it executes without errors. However, these functions are almost identical to each other.</p>
  
  <p>When I run the <code>getTimeScore()</code> method from a main in the <code>FileIO</code> class, then it works fine.</p>
  
  <h3>Errors</h3>
  
  <pre><code>Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  at tetris.FileIO.loadHighscores(FileIO.java:52)
  at tetris.FileIO.getTimeScores(FileIO.java:31)
  at tetris.HighScores.&lt;init&gt;(HighScores.java:39)
  at tetris.Menu$2.actionPerformed(Menu.java:74)
  at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  at java.awt.Component.processMouseEvent(Component.java:6505)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
  at java.awt.Component.processEvent(Component.java:6270)
  at java.awt.Container.processEvent(Container.java:2229)
  at java.awt.Component.dispatchEventImpl(Component.java:4861)
  at java.awt.Container.dispatchEventImpl(Container.java:2287)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  at java.awt.Container.dispatchEventImpl(Container.java:2273)
  at java.awt.Window.dispatchEventImpl(Window.java:2719)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
  at java.awt.EventQueue.access$200(EventQueue.java:103)
  at java.awt.EventQueue$3.run(EventQueue.java:682)
  at java.awt.EventQueue$3.run(EventQueue.java:680)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  at java.awt.EventQueue$4.run(EventQueue.java:696)
  at java.awt.EventQueue$4.run(EventQueue.java:694)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
  </code></pre>
  
  <h3>Code</h3>
  
  Highscores class
  
  <pre><code>public HighScores(){
      // init A
      super("Highscores");
      c=getContentPane();
      test = new String[100][2];
      files = new FileIO();
  
      mainPanel = new JPanel();
      test = files.getTimeScores();
      timeTable = new JTable(test,timeTitles );
      test = files.getLineScores();
      lineTable = new JTable(test,lineTitles );
  </code></pre>
  
  FileIO class
  
  <pre><code>import java.io.File;
  import java.io.InputStream;
  import java.io.Writer;
  import java.util.Scanner;
  
  
  public class FileIO {
      private File file;
      private Scanner filescScanner, lineScanner;
      private Writer fileWriter, lineWriter;
      private String[][] data;
  
      public FileIO () {
          data = new String[100][2];
      }
  
      public String[][] getLineScores(){
          return this.loadHighscores(this.getClass().getResourceAsStream("LineHighscores.txt"));
      }
  
      public String[][] getTimeScores(){
          return this.loadHighscores(this.getClass().getResourceAsStream("TimeHighscores.txt"));
      }
  
      public String[][] loadHighscores( InputStream resourceStream){
          int x=0;
          String test = "";
  
          filescScanner = new Scanner(resourceStream);
  
          while(filescScanner.hasNextLine()&amp;&amp; x&lt;100) {
              lineScanner = new Scanner(filescScanner.nextLine());
              lineScanner.useDelimiter("-/-");
  
              data[x][0]=lineScanner.next();//name
              data[x][1]=lineScanner.next();//data
              x++;
          }
          lineScanner.close();
          filescScanner.close();
          return data;
      }
  </code></pre>