title: Why won't the else statement in my while loop execute when the conditions in the if statement aren't met?
body: <p>I'm making a game called 'Game of Nim' in Netbeans. Basically, a random amount of stones between 15-30 is generated and a computer and a player take turns taking 1-3 stones until there are none left. The player to take the last stones loses. I'm coding this in a jframe form. I want to make sure the player doesn't enter a number bigger than 3, less than 1 and bigger than the total stones, so I made a while loop with an if statement for the input that meets the requirements and an else statement if they aren't met. My problem is that when a player does enter numbers that shouldn't be entered, no error message appears and the game continues as normal.
  Here is where I think the problem is:</p>
  
  <pre><code>    public int playerInput(){
          // Getting the user input and converting it into an integer
          int userIn = Integer.parseInt(txtIn.getText());
          //
          boolean input = false;
  
          // Do this while the input isn't between 1-3 and higher than the total amount of rocks
          while(!input){
              //
              if (userIn &lt; 3 || userIn &gt; 1 || userIn &lt; totalStone){
                  //
                  input = true;                                      
              }
                  //
                  else{
                      // Output an error message
                      txtaOut.setText(txtaOut.getText() +"\nEnter a number between 1 - 3 and less than the amount of stones left.");
                  }   
          }
          // return the amount of rocks the user takes
          return userIn;              
  }
  </code></pre>
  
  <p>Here is most of the code for the game (I am going to use the random slashes for commenting):</p>
  
  <pre><code>    public void computerMove() {      
      // Generating a number for the computer's move
      int comIn = (int)(Math.random() * 2) + 1;            
  
      // If number generated is bigger than the total stones,
      if (comIn &gt; totalStone){           
          // Get the difference between the total and the random number
          int totalComDiff = Math.abs(totalStone - comIn);
          // Subtract the difference from the random number
          comIn -= totalComDiff;
          // Substract the rocks taken from the total
          totalStone -= comIn;
          // Display a message of the rocks taken and the rocks left
          txtaOut.setText(txtaOut.getText() +"\nThe computer picked up " +comIn +" stone(s). There are " +totalStone +" stones left.");
          }
              // Otherwise, if the random number is smaller than the total,
              else if (comIn &lt; totalStone){
                  // Substract the rocks taken from the total
                  totalStone -= comIn;
                  // Display a message of the rocks taken and the rocks left
                  txtaOut.setText(txtaOut.getText() +"\nThe computer picked up " +comIn +" stone(s). There are " +totalStone +" stones left.");
  
              }
               // If the total equals amount the computer takes,
              else if (totalStone == comIn){                    
                  // Substract the rocks taken from the total
                  totalStone -= comIn;
                  // Display a message of the rocks taken and the rocks left
                  txtaOut.setText(txtaOut.getText() +"\nThe computer picked up " +comIn +" stone(s). There are " +totalStone +" stones left.");          
                  // Display a message that says the player wins
                  txtaOut.setText(txtaOut.getText() +"\nThere are no more stones left. The player wins!");
              }            
  
              // Otherwise, if the amount of stones is 0,
              else if (totalStone == 0){
                  // Display an end game message
                  txtaOut.setText(txtaOut.getText() + "\nThe game has ended.");
              }
  
  }
  public void playerMove(){
      // If there are no more stones left,
      if (playerInput() == totalStone){
          // Subtracting how much the player took from the total amount of rocks
          totalStone -= playerInput();
          // Displaying how many rocks were taken and how many are left
          txtaOut.setText(txtaOut.getText() +"\nYou picked up " +playerInput() +" stone(s). There are " +totalStone +" stones left.");                
  
          // Display a message that says the computer wins
          txtaOut.setText(txtaOut.getText() + "\nThere are no more stones left. The computer wins.");
      }
          //
          else if (playerInput() != totalStone){
              // Subtracting how much the player took from the total amount of rocks
              totalStone -= playerInput();
              // Displaying how many rocks were taken and how many are left
              txtaOut.setText(txtaOut.getText() +"\nYou picked up " +playerInput() +" stone(s). There are " +totalStone +" stones left.");                
  
          }
          //
          else if (totalStone &lt;= 0){
              //
              txtaOut.setText(txtaOut.getText() + "\nThe game has ended.");
              }        
  }
      private void btnEnterActionPerformed(java.awt.event.ActionEvent evt) {                                         
      //
      if (totalStone &gt; 0){
          // Display how many rocks there are
          txtaOut.setText(txtaOut.getText() +"\nThere are " +totalStone +" stones.");
          // The player does their move
          playerMove();
  
  
      }
  
      //
      if (totalStone &gt; 0){
          // Computer does a turn
          computerMove();
      }
  
          //
          else if (totalStone == 0){
              //
              txtaOut.setText(txtaOut.getText() + "\nThe game has ended.");
          }
  }                                        
      private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {                                         
      // Generating another random number
      totalStone = (int)(Math.random() * 15) + 15;
  
      // Clearing all the textfields
      txtIn.setText("");
      txtaOut.setText("");
  
      // Outputting the number of starting stones
      txtaOut.setText(txtaOut.getText() +"There are " +totalStone +" stones. It's your turn.");
  
  } 
  </code></pre>