Reputation: 13
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
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
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
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
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
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