javainputtry-catchjava.util.scannerinputmismatchexception

Java, try-catch with Scanner


I am creating a small algorithm and this is a part of it.

If the user enters non integer values, I want to output a message and let the user enter a number again:

boolean wenttocatch;

do 
{
    try 
    {
        wenttocatch = false;
        number_of_rigons = sc.nextInt(); // sc is an object of scanner class 
    } 
    catch (Exception e) 
    {
        wenttocatch=true;
        System.out.println("xx");
    }
} while (wenttocatch==true);

I am getting a never ending loop and I can't figure out why.

How can I identify if the user enters some non integer number?
If the user enters a non integer number, how can I ask the user to enter again?

Update
When I am printing the exception I get 'InputMismatchException', what should I do?


Solution

  • You dont have to do a try catch. This code will do the trick for you :

    public static void main(String[] args) {
        boolean wenttocatch = false;
        Scanner scan = new Scanner(System.in);
        int number_of_rigons = 0;
        do{
            System.out.print("Enter a number : ");
            if(scan.hasNextInt()){
                number_of_rigons = scan.nextInt();
                wenttocatch = true;
            }else{
                scan.nextLine();
                System.out.println("Enter a valid Integer value");
            }
        }while(!wenttocatch);
    }