title: I can't figure out how to fix the nullpointererror in Java
body: <p>I am writing a program that takes a file and writes it's contents to an array. Then the array is sorted with a selection sort algorithm and then can be searched using the binary search algorithm. The array can not have more than 100 elements and I can't use user-defined classes.</p>
  
  <pre><code>/*Griffen Fox
    CS 110
    Assignment 5
    Question 1
  */
  import java.util.Scanner;
  import java.io.*;
  public class WordsSearchProgram
  {
     public static void main(String[] args)throws IOException
     {
        //Loads Words.txt to an array
        final int SIZE = 100; //Size of the array
        String[] words = new String[SIZE]; // creates the array
        int index = 0; // Loop Control Variable
  
        //Opens the File
        File file = new File("words.txt");
        Scanner inputFile = new Scanner(file);
  
        //Reads Contents Into Array
        while (inputFile.hasNext() &amp;&amp; index &lt; words.length)
        {
           words[index] = inputFile.nextLine();
           index++;
        }
  
        //Close File
        inputFile.close();
        int search;
        for (index = 0; index &lt; words.length; index++)  
        {  
           search = searchString(words, words[index]);  
  
           if (search &gt;= 0) 
           {  
              System.out.println(words[index] + " is at index " + search);  
           }  
           else 
           {  
              System.out.println(words[index] + " is not in the array.");  
           }  
         }  
      }
      //Selection Sort Algorithm
      public static String[] sort(String[] words)
      {
        for (int i = words.length - 1; i &gt;= 1; i--)
        {
         // Find the maximum in the list[0..i]
         String  currentMax = words[0];
         int currentMaxIndex = 0;
  
           for (int j = 1; j &lt;= i; j++)
           {
              if (currentMax.compareTo(words[j]) &lt; 0) 
              {
                 currentMax = words[j];
                 currentMaxIndex = j;
              }
           }
  
         // Swap list[i] with list[currentMaxIndex] if necessary;
         if (currentMaxIndex != i) 
         {
           words[currentMaxIndex] = words[i];
           words[i] = currentMax;
         }
  
        }
        return words;
        }
        //Binary Search String
        public static int searchString(String[] words, String key) 
        {  
           int first = 0;  
           int last  = words.length;
           int position = -1;
           boolean found = false;  
  
           while (!found &amp;&amp; first &lt;= last)
           {  
              int mid = ((first + last) / 2);  
              if (key.compareTo(words[mid]) == 0) 
              {  
                 found = true;
                 position = mid;  
              }
              else if (key.compareTo(words[mid]) &gt; 0) 
              {  
                 first = mid - 1;  
              } 
              else 
              {  
                 first = mid + 1;  
              }   
            }  
           return position;  
        }
  } 
  </code></pre>