Hardik
Hardik

Reputation: 13

Display an Error for invalid input in JAVA

I have written a JAVA program that takes input from the user and check if the user has entered the correct thing or not. I have taken the input from the Scanner class. If the user enters an invalid character like a String, I want to display 'Invalid Input'.

public class Main {
    public static void main(String[] args) {
        Scanner takeInteger = new Scanner(System.in);
        System.out.println("Enter a number");
        int enteredNumber = takeInteger.nextInt();
    }
}

Upvotes: 1

Views: 4010

Answers (5)

Sonam Gupta
Sonam Gupta

Reputation: 383

You can use Exception handling for the same.

public class Main {
     public static void main(String[] args) {
         Scanner takeInteger = new Scanner(System.in);
         System.out.println("Enter a number");
         try {
             int enteredNumber = takeInteger.nextInt();
         }
         catch (Exception e) {
             System.out.println("Invalid Input");
         }
     }
}

Upvotes: 1

Holger
Holger

Reputation: 298123

Just ask the Scanner whether the next input is a valid int value, e.g.

Scanner takeInteger = new Scanner(System.in);
System.out.println("Enter a number");
while(!takeInteger.hasNextInt()) {
    System.out.println("Invalid Input: " + takeInteger.next());
}
int enteredNumber = takeInteger.nextInt();

This will retry the operation until the user entered a number. If you just want a single attempt, use something like

Scanner takeInteger = new Scanner(System.in);
System.out.println("Enter a number");
if(!takeInteger.hasNextInt()) {
    System.out.println("Invalid Input: " + takeInteger.next());
}
else {
    int enteredNumber = takeInteger.nextInt();
    // ... proceed with the input
}

Upvotes: 4

Ashish Mishra
Ashish Mishra

Reputation: 724

You will get an Exception that is InputMismatchException when an invalid input is passed.(i.e except integer value),you can use a try-catch block to hold the exception and inform the user about the invalid input. Try block , Catch block

    import java.util.*; 

    Scanner takeInteger = new Scanner(System.in);
    System.out.println("Enter a number");
    try{
       int enteredNumber = takeInteger.nextInt();
    }
    catch(InputMismatchException e) {
        System.out.println("Enter a valid input");
    }

Upvotes: 1

mamadaliev
mamadaliev

Reputation: 166

You need to call the .nextLine method of the Scanner class and then parse to the desired type.

Example:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a number");
        String line = sc.nextLine();

        try {
            int enteredNumber = Integer.parseInt(line);
            System.out.println("You have entered: " + enteredNumber);
        } catch (Exception e) {
            System.out.println("Invalid Input");
        }
    }
}

Result with a number:

Enter a number
12
You have entered: 12

Result a text:

Enter a number
abcd
Invalid Input

Upvotes: 0

GURU Shreyansh
GURU Shreyansh

Reputation: 909

You can add a try-catch block in your program to check if the user's input is a number or not.

        Scanner takeInteger = new Scanner(System.in);
        System.out.println("Enter a number");
        String input = takeInteger.next();
        int enteredNumber;
        try
        {
            enteredNumber = Integer.parseInt(input); // Input is a number
        }
        catch(NumberFormatException ex)
        {
            System.out.println("Wrong Input!"); // Invalid input
        }

Upvotes: 0

Related Questions