【问题标题】:How do i check the input is an integer in java [duplicate]我如何检查输入是java中的整数[重复]
【发布时间】:2020-02-07 02:22:03
【问题描述】:

在我的程序中,我希望用户输入一个整数。我希望在用户输入不是整数的值时显示错误消息。 以及如何循环执行此操作。我只是一个初学者请帮助我。

        //code that i already try
        Scanner input = new Scanner(System.in);
        int age;
        String AGE ;


        System.out.print("\nEnter Age       : "); 
        AGE = input.nextLine();
        try{
          age = Integer.parseInt(AGE);

        }catch (NumberFormatException ex){

             System.out.print("Invalid input " + AGE + " is not a number");
        }

【问题讨论】:

标签: java validation


【解决方案1】:

您使用 while 循环并在成功时中断

int age;

while (true) {   // wil break on sucess 
   Scanner input = new Scanner(System.in);
   System.out.print("\nEnter Age       : "); 
   String AGE = input.nextLine();
    try{
      age = Integer.parseInt(AGE);
      break;  
    }catch (NumberFormatException ex){
        System.out.print("Invalid input " + AGE + " is not a number");
    }
}

【讨论】:

  • 要删除“无意的”空间,请使用 AGE.trim()...
【解决方案2】:

这是检查用户输入是否为整数的更好方法 -

public static void onlyInteger() {


    int myInt = 0;
    System.out.println(" Please enter Integer");
    do {
        while (!input.hasNextInt()){
            System.out.println(" Please enter valid Integer :");
            input.next();
        }
        myInt = input.nextInt();
    }while (myInt  <= 0);

}

希望这会有所帮助。

【讨论】:

  • 适用于负年龄,但年龄可以为 0,并且对于想要有效@​​987654322@ 输入的其他用途也不是很便携
  • 是的,你是对的,我只是给了他一个检查有效 int 的想法,他可以根据他的用例操纵或使用他的逻辑来打印整数。谢谢:)
  • 为什么 myInt 是双精度值?
  • 对不起,我的错。我已经更新了代码:)
【解决方案3】:

如果您尝试将年龄输入捕获为整数,则不需要整数数组

'int age [] = new int [100];'

您可以使用 Scanner 的 nextInt() 方法来捕获整数输入。

如果输入不是整数,这将抛出 InputMismatchException 异常。试试下面的代码。

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter Age: ");
        try {
            int number = input.nextInt();
            System.out.println("Age entered " + number);
        } catch (InputMismatchException e) {
            System.out.println("Incorrect Input for Age.Please enter integer Integer value");
        }
    }

【讨论】:

  • 不回答问题
【解决方案4】:

检查输入是一个整数或任何数字

Step 1 is to Read the input as Java Object, then
Object o = new Integer(33);// or can be new Float(33.33)...

if(o instanceof Number) {
   System.out.println(o +" is number");// do your thing here
}

抽象类 Number 是平台类的超类,表示可转换为基本类型 byte、double、float、int、long 和 short 的数值。

JavaDoc Number

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2013-12-10
    • 2014-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多