• 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,所以还不如这个工作由我们自己来做,还省得再抛出一次异常... 

  • 相关阅读:
    oracle中的exists 和not exists 用法详解
    再次谈谈easyui datagrid 的数据加载
    oracle之trunc(sysdate)
    小菜学习设计模式(五)—控制反转(Ioc)
    vim实用技巧
    003_Linux的Cgroup<实例详解>
    systemd在各个linux发行版的普及
    (部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息
    中国科学院国家授时中心
    Linux时间同步配置方法
  • 原文地址:https://www.cnblogs.com/crane13/p/3150146.html
Copyright © 2020-2023  润新知