title: How can I repeatedly read user input using Scanner java
body: <p>I am trying to create a simple menu for my program that reads user input. Here's the code:</p>
  
  <pre><code>public void menu() {
          String command;
  
          System.out.println("To operate with words write: a");
          System.out.println("To operate with products write: b");
  
          System.out.print("\nGive the command: ");
          Scanner scanner = new Scanner(System.in);
          command = scanner.nextLine();
  
          if (command.equals("a")) {
              System.out.println("\nGood job! You have chosen the word program\n");
              System.out.println("You can only use the following commands: ");
              System.out.println("exit - to exit the program");
              System.out.println("add - to add a word into the map");
              System.out.println("lookup - to lookup a word into the map\n");
              System.out.print("Give a command: ");
              command = scanner.next();
              while(scanner.hasNext()){
                  command = scanner.next();
                  if(command.equals("add")){
                      this.addWord();
                  }
  
                  System.out.print("Give a command: ");
                  command = scanner.next(); //Here I get the ERROR that throws Exception
              }
          }
  
          scanner.close();
      }
  
  public static void main(String [] args)
  {
       HashTableInterface table = new HashTable(); 
       Dictionary d = new Dictionary(table); 
       RepositoryInterface repo = new Repository(d); 
       ControllerInterface controller = new Controller(repo); 
       Console c = new Console(controller); 
       c.menu()
  }
  </code></pre>
  
  <p>And here's a test with the exception I get:</p>
  
  <pre><code>To operate with words write: a
  To operate with products write: b
  
  Give the command: a
  
  Good job! You have chosen the word program
  
  You can only use the following commands: 
  exit - to exit the program
  add - to add a word into the map
  lookup - to lookup a word into the map
  
  Give a command: add
  add
  Give the word: mar
  Give the word's plural: mere
  The hash code for mar is: 3
  Give a command: Exception in thread "main" java.util.NoSuchElementException
      at java.util.Scanner.throwFor(Scanner.java:907)
      at java.util.Scanner.next(Scanner.java:1416)
      at console.Console.menu(Console.java:56)
      at test.Prog.main(Prog.java:26)
  </code></pre>
  
  <p>I removed the second command = scanner.next() from the while loop but then it let's me read user input only once. How can solve this?</p>
  
  <p>UPDATE: the AddWord method:</p>
  
  <pre><code>public void addWord() {
  
          Scanner scanner = new Scanner(new InputStreamReader(System.in));
  
          System.out.print("Give the word: ");
          String word = scanner.nextLine();
          System.out.print("Give the word's plural: ");
          String plural = scanner.nextLine();
          scanner.close();
  
          controller.addTheWord(word, plural);
      }
  </code></pre>