zoukankan      html  css  js  c++  java
  • java判断字符串是否为数字

    判断字符串是否为数字

     

    //1、正则表达式
     public static boolean isNumeric1(String str){
      Pattern pattern = Pattern.compile("[0-9]*");
      return pattern.matcher(str).matches();
     }
     //2、java自带函数
     public static boolean isNumeric2(String str){
      for (int i = str.length();--i>=0;){
       if (!Character.isDigit(str.charAt(i))){
        return false;
       }
      }
      return true;
     }
     //3、正则表达式
     public static boolean isNumeric(String str){
      if(str.matches("\\d *")){
       return true;
      }else{
       return false;
      }
     }
        //4、判断ASCII码值
     public static boolean isNumeric0(String str){
      for(int i=str.length();--i>=0;){
       int chr=str.charAt(i);
       if(chr<48 || chr>57)
        return false;
      }
      return true;
     }
        //5、逐个判断str中的字符是否是0-9
     public static boolean isNumeric3(String str){
      final String number = "0123456789";
      for(int i = 0;i 
                if(number.indexOf(str.charAt(i)) == -1){  
                 return false;  
                
       
      return true;
     }
        //6、捕获NumberFormatException异常
     public static boolean isNumeric00(String str){
      try{
       Integer.parseInt(str);
       return true;
      }catch(NumberFormatException e){
       System.out.println("异常:\"" + str + "\"不是数字/整数...");
       return false;
      }
     }
     
     ps:不提倡使用方法6,原因如下:
        1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。  
        2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。 
     看一下JDK源码:
     public static long parseLong(String s,int radix)  
             throws NumberFormatException  
      
        if(s == null){  
           throw   new   NumberFormatException("null");  
        
        if(radix < Character.MIN_RADIX){  
               throw new NumberFormatException("radix " + radix +
               " less than Character.MIN_RADIX");  
        
        if(radix > Character.MAX_RADIX){  
               throw new NumberFormatException("radix " + radix +
               " greater than Character.MAX_RADIX");  
        
        long result = 0;  
        boolean negative = false;
        int i = 0,max = s.length();  
        long limit;  
        long multmin;  
        int digit;
        if(max > 0){  
         if(s.charAt(0) == '-'){  
          negative = true;  
          limit = Long.MIN_VALUE;
          i++;
         }else{
          limit = -Long.MAX_VALUE;
         
         multmin = limit / radix;
         if(i < max){  
          digit = Character.digit(s.charAt(i++),radix);  
          if(digit < 0){
                throw new NumberFormatException(s);  
          }else{  
                result = -digit;
          
         
         while(i < max){  
          // Accumulating negatively avoids surprises near MAX_VALUE
          digit = Character.digit(s.charAt(i++),radix);  
          if(digit < 0){  
           throw new NumberFormatException(s);  
          
          if(result < multmin){  
           throw new NumberFormatException(s);  
          
          result *= radix;  
          if(result < limit + digit){  
           throw new NumberFormatException(s);  
          
          result -= digit;  
        
        }else{  
         throw   new   NumberFormatException(s);  
        
        if(negative){  
         if(i > 1){  
          return result;
         }else{  
          throw new NumberFormatException(s);  
         
        }else{  
         return   -result;  
        
      
     可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常... 

  • 相关阅读:
    MySQL数据库基础
    Django框架
    Python基础
    C#
    小功能
    数据结构与算法
    C语言
    Robot Framework高级
    Robot Framework初级
    C++基础
  • 原文地址:https://www.cnblogs.com/crane13/p/3150146.html
Copyright © 2011-2022 走看看