title: Cannnot find "Array Out of Bounds Exception" Java
body: <p>I am creating a search engine that reads in a text file, and prints out a word that a user can search for. I'm currently creating an index of arrays to be searched for. More information can be found here: <a href="http://cis-linux1.temple.edu/~yates/cis1068/sp12/homeworks/concordance/concordance.html" rel="nofollow">http://cis-linux1.temple.edu/~yates/cis1068/sp12/homeworks/concordance/concordance.html</a></p>
  
  <p>When I run this program right now, I get an "Array Index Out of Bounds Exception"</p>
  
  <p>Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 43
      at SearchEngine.main(SearchEngine.java:128)</p>
  
  <p>Can anyone help debug?</p>
  
  <pre><code>import java.util.*;
  import java.io.*;
  
  
  public class SearchEngine {
  
  
  public static int getNumberOfWords (File f) throws FileNotFoundException {
      int numWords = 0;
      Scanner scan = new Scanner(f);
      while (scan.hasNext()) {
      numWords++;
      scan.next();
      }
      scan.close();
  
      return numWords;
  }
  
  public static void readInWords (File input, String [] x) throws FileNotFoundException {
      Scanner scan = new Scanner(input);
      int i = 0;
      while (scan.hasNext() &amp;&amp; i&lt;x.length) {
          x[i] = scan.next();
          i++;
          }
      scan.close();
  }
  
  public static int getNumOfDistinctWords (File input, String [] x) throws FileNotFoundException {
      Scanner scan = new Scanner(input);
      int count = 0;
      int i = 1;
      while (scan.hasNext() &amp;&amp; i&lt;x.length) {
      if (!x[i].equals(x[i-1])) {
      count++;
      }
      i++;
      }
      scan.close();
      return count;
  }
  
  public static void readInDistinctWords (String [] x, String [] y) {
      int i = 1;
      int k = 0;
      while (i&lt;x.length) {
          if (!x[i].equals(x[i-1])) {
          y[k] = x[i];
          k++;
          }
      i++;
      }
  }
  
  public static int getNumberOfLines (File input) throws FileNotFoundException {
      int numLines = 0;
      Scanner scan = new Scanner(input);
      while (scan.hasNextLine()) {
          numLines++;
          scan.nextLine();
          }
      scan.close();
      return numLines;
  }
  
  public static void readInLines (File input, String [] x) throws FileNotFoundException {
      Scanner scan = new Scanner(input);
      int i = 0;
      while (scan.hasNextLine() &amp;&amp; i&lt;x.length) {
          x[i] = scan.nextLine();
          i++;
          }
      scan.close();
  }
  </code></pre>
  
  <p>Main</p>
  
  <pre><code>public static void main(String [] args) {
  
   try {
  
      //gets file name
  System.out.println("Enter the name of the text file you wish to search");
      Scanner kb = new Scanner(System.in);
      String fileName = kb.nextLine();
      String TXT = ".txt";
      if (!fileName.endsWith(TXT)) {
          fileName = fileName.concat(TXT);
      }
  
      File input = new File(fileName);
  
  //First part of creating index
  System.out.println("Creating vocabArray");
  int NUM_WORDS = getNumberOfWords(input);
  //System.out.println(NUM_WORDS);
  String [] wordArray = new String[NUM_WORDS];
  readInWords(input, wordArray);
  Arrays.sort(wordArray);
  int NUM_DISTINCT_WORDS = getNumOfDistinctWords(input, wordArray);
  String [] vocabArray = new String[NUM_DISTINCT_WORDS];
  readInDistinctWords(wordArray, vocabArray);
  System.out.println("Finished creating vocabArray");
  
  
  
  System.out.println("Creating concordanceArray");
  int NUM_LINES = getNumberOfLines(input);
  String [] concordanceArray = new String[NUM_LINES];
  readInLines(input, concordanceArray);
  System.out.println("Finished creating concordanceArray");
  
  
  
  System.out.println("Creating invertedIndex");
  int [][] invertedIndex = new int[NUM_DISTINCT_WORDS][10];
  int [] wordCountArray = new int[NUM_DISTINCT_WORDS];
  int lineNum = 0;
      while (lineNum&lt;concordanceArray.length) {
          Scanner scan = new Scanner(concordanceArray[lineNum]);
          while (scan.hasNext()) {
              int wordPos = Arrays.binarySearch(vocabArray, scan.next());
              wordCountArray[wordPos]+=1;
              for(int i = 0; i &lt; invertedIndex.length; i++) {
              for(int j = 0; j &lt; invertedIndex[i].length; i++) {
              if (invertedIndex[i][j] == 0) {
              invertedIndex[i][j] = lineNum;
              break;
              } } }
              }
          lineNum++;
          }
  System.out.println("Finished creating invertedIndex");
  
  }
  
      catch (FileNotFoundException exception) {
      System.out.println("File Not Found");
  }
  
  
  
  
  } //main
  </code></pre>
  
  <p>} //class</p>