温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java有几种方法可以判断字符串是否是数字

发布时间:2020-06-26 11:34:59 来源:亿速云 阅读:196 作者:Leah 栏目:编程语言

java有几种方法可以判断字符串是否是数字?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1、用Java自带的方法

Java中有一个Character.isDig(char ch)

    public class CheckStrIsNum {   
        public static void main(String[] args) {     
            double aa = -192322.1212;    
            String a = "-192322.1212";  
            String b = "-192322a1212";     
            String c = "Java";  
            String d = "5";    
            /** 判断是否全为数字 */                     
            System.out.println(checkStrIsNum01(Double.toString(aa)));        
            System.out.println(checkStrIsNum01(a));        
            System.out.println(checkStrIsNum01(b));        
            System.out.println(checkStrIsNum01(c));        
            System.out.println(checkStrIsNum01(d)); 
        }
        
        /**
         * 利用Java的character.isDigit方法进行处理
         */
        public static boolean checkStrIsNum01(String str) {    
            for (int i = 0; i < str.length(); i++) {    
                System.out.println(str.charAt(i)); 
                if (!Character.isDigit(str.charAt(i))) { 
                    return false;  
                }
            } 
            return true;
       }
    }

显然b应该返回false才对,但是却返回true,而"5"应该返回true,也是结果错误。由此可见,这个结果,并不完美。

2、利用正则表达式来判断

利用正则表达式来-?[0-9]+(\\.[0-9]+)?来做判断字符串是否为数字。
如果传入的数据有很多位,那么使用double会导致精度丢失,这个时候就要用BigDecimal来进行转换。

    public class CheckStrIsNum {   
        public static void main(String[] args) {     
            double aa = -192322.1212;    
            String a = "-192322.1212";  
            String b = "-192322a1212";     
            String c = "Java";  
            String d = "5";    
            /** 判断是否全为数字 */                     
            System.out.println(checkStrIsNum02(Double.toString(aa)));        
            System.out.println(checkStrIsNum02(a));        
            System.out.println(checkStrIsNum02(b));        
            System.out.println(checkStrIsNum02(c));        
            System.out.println(checkStrIsNum02(d)); 
        }
        
        private static Pattern NUMBER_PATTERN = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");
        /** 
         * 利用正则表达式来判断字符串是否为数字 
         */
         public static boolean checkStrIsNum02(String str) { 
            String bigStr; 
            try {      
                /** 先将str转成BigDecimal,然后在转成String */
                bigStr = new BigDecimal(str).toString(); 
            } catch (Exception e) { 
                /** 如果转换数字失败,说明该str并非全部为数字 */
                return false; 
            } 
            Matcher isNum = NUMBER_PATTERN.matcher(str); 
            if (!isNum.matches()) {    
                return false; 
            }  
            return true;
        }
    }

关于java有几种方法可以判断字符串是否是数字问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI