Я бы порекомендовал вместо использования всех этих исключений создавать отдельные методы для чтения определенных типов данных. (Ex.)
import java.util.Scanner;
открытый класс HelloWorld {
public static void main(String[] args){
int n = getInteger("Enter integer: ");
System.out.println(n);
}
public static boolean isInteger(String s){
if(s.isEmpty())return false;
for (int i = 0; i <s.length();++i){
char c = s.charAt(i);
if(!Character.isDigit(c) && c !='-')
return false;
}
return true;
}
public static int getInteger(String prompt){
Scanner input = new Scanner(System.in);
String in = "";
System.out.println(prompt);
in = input.nextLine();
while(!isInteger(in)){
System.out.println(prompt);
in = input.nextLine();
}
return Integer.parseInt(in);
}
}