Search code examples
javajava.util.scannerinputmismatchexception

InputMismatchException for String input into integer field


I am having trouble with entering non-integers into an integer field. I am only taking precautions so that if another person uses/works on my program they don't get this InputMismatchException.

When I enter a non-digit character into the input variable, I get the above error. Is there any way to compensate for this like one could do for a NullPointerException when it comes to strings?

This code is redacted just to include the relevant portions causing the problem.

import java.util.Scanner;

class MyWorld {

public static void main(String[] args) {

   Scanner user_input = new Scanner(System.in);

   int input = 0;   

   System.out.println("What is your age? : ");
   input = user_input.nextInt();
   System.out.println("You are: " +input+ " years old");

  }

}

Solution

  • You can use an if statement to check if user_input hasNextInt(). If the input is an integer, then set input equal to user_input.nextInt(). Otherwise, display a message stating that the input is invalid. This should prevent exceptions.

    System.out.println("What is your age? : ");
    if(user_input.hasNextInt()) {
        input = user_input.nextInt();
    }
    else {
        System.out.println("That is not an integer.");
    }
    

    Here is some more information about hasNextInt() from Javadocs.

    On a side note, variable names in Java should follow the lowerMixedCase convention. For example, user_input should be changed to userInput.