Azaria Gebo
Azaria Gebo

Reputation: 11

Prevent input error

import java.util.Scanner;

public class test {

    public static void main(String[] args) {
        System.out.print("Enter a number: ");
        Scanner keyboard = new Scanner(System.in);
        int x = keyboard.nextInt();

    }
}

How do I loop a piece of code like the one above until an int is entered instead of giving an error when a non-int is entered?

Upvotes: 1

Views: 4530

Answers (2)

Dray
Dray

Reputation: 1

This tries to run the scanner, if a input is one that is not expected it will simply restart. You can add a message to it, my code was for brevity.

import java.util.Scanner;

public class test {

public static void main(String[] args) {
    System.out.print("Enter a number: ");
    Scanner keyboard = new Scanner(System.in);
    try {
        int x = keyboard.nextInt();
    }
    catch (java.util.InputMismatchException e) {
        main(null);
    }
}

}

Upvotes: 0

Terry Chern
Terry Chern

Reputation: 692

The Scanner class has a lot of stuff built in so that you don't need to do try-catches unless you are explicitly looking to catch the errors.

public static int test(){
    int number = 0;
    Scanner input = new Scanner(System.in);
    boolean valid = false;
    do{
        System.out.print("Please enter an integer: ");
        if(input.hasNextInt()){ // This checks to see if the next input is a valid **int**
            number = input.nextInt();
            valid = true;
        }
        else{
            System.out.print("Not a valid integer!\n");
            input.next();
        }
    }while(valid == false);
    return number;

}

Upvotes: 2

Related Questions