我正在创建一个程序,它将询问用户的int输入并检查用户输入是否为整数。如果没有程序要求输入磁贴,它会得到一个整数。
Scanner in = new Scanner(System.in);
System.out.println("Eneter a nuber here:");
int num;
if (in.hasNextInt()){
num =in.nextInt();
if(num % 2 == 0){
System.out.print("this is even!!");
} else{
System.out.println("this is odd!!");
}
} else {
System.out.print("pleas enter an integer only!!!");
num = in.nextInt();
if(num % 2 == 0){
System.out.print("this is even second check!!");
} else{
System.out.println("this is odd second check!!");
}
}
这是代码,但我有一些错误。输入不是int时会出错。请求帮助,提前谢谢!
答案 0 :(得分:2)
尝试下面的代码,只有当它是一个有效的整数时它才会结束,否则它会继续询问整数,我认为你正在寻找相同的。
public void checkInt() {
Scanner scanner = new Scanner(System.in);
System.out.println("Eneter a nuber here:");
try {
int num = scanner.nextInt();
if (num % 2 == 0) {
System.out.print("this is even!!");
} else {
System.out.println("this is odd!!");
}
} catch (InputMismatchException e) {
System.out.println("pleas enter an integer only!!!");
checkInt();
}
}
答案 1 :(得分:1)
可能是一种愚蠢的方式,但这可以解决您的问题:
String x;
x = "5";//or get it from user
int y;
try{
y = Integer.parseInt(x);
System.out.println("INTEGER");
}catch(NumberFormatException ex){
System.out.println("NOT INTEGER");
}
<强>编辑:强>
程序将尝试将字符串转换为整数。如果它是整数,它将成功,否则它将获得异常并被捕获。
另一种方法是检查 ASCII 值。
继续直到遇到整数:
String x;
Scanner sc = new Scanner(System.in);
boolean notOk;
do{
x = sc.next();
notOk = check(x);
}while(notOk);
System.out.println("Integer found");
}
private static boolean check(String x){
int y;
try{
y = Integer.parseInt(x);
return false;
}catch(NumberFormatException ex){
return true;
}
}
答案 2 :(得分:1)
您必须将用户输入读为String。然后,在try / catch块内部,进行转换为整数(Integer.parseInt()),如果抛出异常则因为不是数字。
答案 3 :(得分:-1)
import java.util.Scanner;
public class Test {
public static void main(String args[] ) throws Exception {
Scanner sc=new Scanner(System.in);
if(sc.hasNextInt())
System.out.println("Input is of int type");
else
System.out.println("This is something else");
}
}