title: Trying to get fresh user input when user's initial input is invalid. But scanner object continues to use first value
body: <p>First of all, apologies for the title gore. </p>
  
  <p>The specific thing I am trying to understand here in the following piece of code is why the getNumber function, when called the second time, continues to return the same initial user input and doesn't ask for a new user input.</p>
  
  <pre><code>/*Write an application that inputs one number consisting
  of five digits from the user, separates the number into its individual digits and prints the digits
  separated from one another by three spaces each. 
   */
  
  public class SeparatingDigitsOfInt {
      static Scanner input = new Scanner(System.in);
  
      public static void main(String[] args) {
      boolean check =false;
          String s=null;
          while (check==false)
          {
          s= Integer.toString(getNumber()); //since user input was a string, getNumber returns 0 and we enter the while loop below
  
          while (s.equals("0"))// here i am trying to get another input from user because first input was invalid
          {
              System.out.println("Try that again!");
              s= Integer.toString(getNumber());  // why getNumber continues to return xyz here and doesn't ask for new user input
              check =false;
  
          }
          check =true;
          }
  
          System.out.println(s);
  
          while(s.length()!= 5){
              System.out.println("Input number is not of 5 digits!");
              System.out.println("Please enter a 5 digit number");    
              s = input.next();
          }
          String result = "";
          for (int i = 0; i &lt; s.length(); i++) {
              result= result + s.charAt(i) + "   ";
          }
  
  
          System.out.println("Result is :" + result);
      }
  
  
      public static int getNumber(){
  
          try {
              System.out.println("Enter a 5 digit number");
              return  input.nextInt(); // user inputs string xyz
  
          } 
  
          catch (InputMismatchException e) {
              System.out.println("Please enter only numbers");
              return 0;// since user inputs xyz, so 0 is returned by getNumber
          }
  
  
      }
  }
  </code></pre>