日期:2014-05-19  浏览次数:20675 次

【讨论】java判断是否是数字,并转换为int类型。
以下是我的代码:

Java code
    /**
     * 判断是否是Integer类型
     * @author daichangfu
     * @param str
     * @return
     */
    public boolean isNumber(String str){
        if(str!=null&&!"".equals(str.trim())){
            Pattern pattern = Pattern.compile("[0-9]*"); 
            Matcher isNum = pattern.matcher(str);
            Long number = 0l;
            if(isNum.matches()){
                number=Long.parseLong(str);
            }else{
                return false;
            }
            if(number>2147483647){
                return false;
            }
        }else{
            return false;
        }
        return true;
    }


当我的URL参数从前台传过来的时候,我需要在后台先判断是否是数字,然后对其进行类型转换,我们头要求不论客户在地址栏怎么输入参数都不能报错。

但是我判断了参数都是数字,但是它的大小超过了int的长度会报错,所以我把它先转换成了Long型,然后判断,但是如果它输入的大小超过了Long一样会报错啊....。 请问大家,这个我改怎么办?

------解决方案--------------------
你只要判断的话,很容易,直接number=Long.parseLong(str);

try catch一下,有异常,return false

否则return true
------解决方案--------------------
Java code

    public static boolean isNumber(String str){
        
        
        if(str==null||str.length()==0)
            return false;
        
        char c[]=str.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if(!Character.isDigit(c[i])){
                return false;
            }
        }
        //到此确认是数字
        //其他操作
        return false;
    }

------解决方案--------------------
Java code

boolean b = org.apache.commons.lang.math.NumberUtils.isNumber("123");