如何判断String输入是否为int Java类型

时间:2016-03-17 19:09:05

标签: java string arraylist int

我正在尝试编写程序,但我的客户端可能无法以正确的格式输入信息。如何判断String是否是Java中的int(因此我可以抛出我写的错误消息并允许它们重试)?即,在java中是否有一个方法可以让我检查String str是否为int?

类型
select m.pid
from mapping m join
     attributes a
     on m.attribId = a.attribId and a.d = 'dS'
group by m.pid
having sum(case when a.d = 'dS' then 1 else 0 end) > 0 and -- at least one of these
       sum(case when a.d = 'd1' then 1 else 0 end) = 0;    -- none of these

答案应包括所需的进口(如果有的话)和基本方法。而且,尽可能简单会非常好。如果这实际上是一个问题的副本,请发布链接(我找了一段时间,但在谷歌或这里找不到任何东西,似乎它会解决我的问题)。

2 个答案:

答案 0 :(得分:1)

在类中创建一个方法 IntegerCheck.java

public Boolean isInteger (String s) 
{
    try
    {
        Integer.parseInt(s);
        return true;

    } catch (Exception e) 
      {
         return false;
      }  
}

然后在你的程序中使用它:

首先导入课程:

import <package name>.IntegerCheck;

在所需功能内:

IntegerCheck obj=new IntegerCheck();

String input=kb.nextLine();  //Get user input using Scanner or any other method, make sure the return type is string.

if(obj.isInteger(input))
{
  //Success.
}
else
{
  //throw an error message that I write and allows them to retry
}

答案 1 :(得分:0)

package main.java;
public class Test {
    public static boolean isNumeric(String s){
        // 11 Because might be negative, but 32bit integer overflow is 
        // 10 characters long.
        if (s.length() > 11) return false;
        int i = 0;
        if (s.startsWith("-")) i++;
        for(; i < s.length(); i++){
            if (!Character.isDigit(s.charAt(i))) return false;
        }
        return true;
    }
    public static void main(String[] args){
        System.out.println(Test.isNumeric("100"));
        System.out.println(Test.isNumeric("aa"));
        System.out.println(Test.isNumeric("12a"));
        System.out.println(Test.isNumeric("1002"));
        System.out.println(Test.isNumeric("-11232"));
        System.out.println(Test.isNumeric("999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999"));
        System.out.println(Test.isNumeric("4294967294"));
    }
}

编辑我忘了包含负数。 编辑处理整数溢出的粗略方法。

请注意,这只适用于整数。正则表达式似乎有点矫枉过正,但并不是一个糟糕的解决方案。根据这个问题,您不应该使用例外来控制程序流:Why not use exceptions as regular flow of control?