如何检查输入是否为整数

时间:2014-08-07 11:04:47

标签: java java.util.scanner

我正在创建一个程序,它将询问用户的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时会出错。请求帮助,提前谢谢!

4 个答案:

答案 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");
     }
}