title: Count words in case "read" won't read the file
body: <p>I'm making a programm which does several things. First, it asks the user for a file name via the console. Next, the user is asked to make a choice out of three different commands: read, content or stop. My question is about the read part. It should show the number of total words in the given file. The file is read in a seperate openTextFile() class. So, I should link case  "read" in the main string with the openTextFile() and display the total amount of words. </p>
  
  <p>That is the point where I got stuck. Just don't know how to go through the inputstream and count the number of words. Can somebody please help me here?</p>
  
  <pre><code>package nl.ru.ai.SjoerdSam.exercise7;
  
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.util.Scanner;
  
  public class Concordances
  {
  
    final static int MAX_NR_OF_WORDS=20000;
    public static void main(String[] args) throws FileNotFoundException
    {
      try
      {
        String[] words=new String[MAX_NR_OF_WORDS];
        int[] freqs=new int[MAX_NR_OF_WORDS];
        boolean terminate=true;
        Scanner scanner=openTextFile();
        int nr=findAndCountWords(scanner,words,freqs);
        while(terminate)
        {
          Scanner input=new Scanner(System.in);
          System.out.println("Please enter 'read' to start reading a file and display number of words read, "+"'content' to display content (all currently stored words in the order of apperance), "+"'stop' to stop the program or "+"'count'+ the word you want to count to count the number of occurences of a word, "+"the total number of words and the percantage of occurences.");
          String command=input.nextLine();
  
          switch(command)
          {
            case "read":
              System.out.println("The number of words in this file is"+nr);
              break;
            case "content":
              displayWords(nr,words,freqs);
              break;
            case "stop":
              terminate=false;
              System.out.println("Program terminated");
              break;
            case "count":
              // Under construction: Bit stuck here on how to do the count and show the frequency of a single word. if i would actually get the frequency the percentage could be found by dividing the frequency with total number of words found above
              Scanner single=new Scanner(System.in);
              System.out.println("Please type in the word you want to know data of");
              String word=single.nextLine();
              findAndCountWord(scanner,words,word);
              System.out.println("The frequency for the word"+" "+single+" "+"is"+findAndCountWord(single,words,word));
              break;
  
          }
        }
      }
      catch(IllegalArgumentException e)
      {
        System.out.print(e);
      }
    }
    static Scanner openTextFile() throws FileNotFoundException
    {
      assert (true);
      Scanner input=new Scanner(System.in);
      System.out.println("Please enter file name: ");
      String fileName=input.nextLine();
      FileInputStream inputStream=new FileInputStream(fileName);
      return new Scanner(inputStream);
    }
    static int findAndCountWords(Scanner scanner, String[] words, int[] freqs)
    {
      assert words!=null&amp;&amp;freqs!=null;
      int nr=0;
      while(scanner.hasNext())
      {
        String word=scanner.next();
        if(updateWord(word,words,freqs,nr))
          nr++;
      }
      return nr;
    }
    static boolean updateWord(String word, String[] words, int[] freqs, int nr)
    {
      assert nr&gt;=0&amp;&amp;words!=null&amp;&amp;freqs!=null;
      int pos=sequentialSearch(words,0,nr,word);
      if(pos&lt;nr)
      {
        freqs[pos]++;
        return false;
      } else
      {
        words[pos]=word;
        freqs[pos]=1;
        return true;
      }
    }
    static int sequentialSearch(String[] array, int from, int to, String searchValue)
    {
      assert 0&lt;=from&amp;&amp;0&lt;=to : "Invalidbounds";
      assert array!=null : "Array shouldbeinitialized";
      if(from&gt;to)
        return to;
      int position=from;
      while(position&lt;to&amp;&amp;(!array[position].equals(searchValue)))
        position++;
      return position;
    }
    static void displayFrequencies(int nr, String[] words, int[] freqs)
    {
      assert nr&gt;=0&amp;&amp;words!=null&amp;&amp;freqs!=null;
  
      for(int i=0;i&lt;nr;i++)
      {
        System.out.println(words[i]+" "+freqs[i]);
      }
    }
    static void displayWords(int nr, String[] words, int[] freqs)
    {
      assert nr&gt;=0&amp;&amp;words!=null&amp;&amp;freqs!=null;
  
      for(int i=0;i&lt;nr;i++)
      {
        System.out.println(words[i]);
      }
    }
  
    static int findAndCountWord(Scanner scanner, String[] words, String word)
    {
      assert words!=null;
      int wordCount=0;
      while(scanner.hasNext())
      {
        for(int i=0;i&lt;words.length;i++)
        {
          if(word.equals(words[i]))
          {
            wordCount++;
          }
        }
      }
      return wordCount;
    }
  }
  </code></pre>