java判断变量是不是数字方法总结

互联网 19-11-25

java判断变量是不是数字方法:(相关视频课程推荐:java视频教程)

1、用JAVA自带的函数

public static boolean isNumeric(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; }

2、用正则表达式

首先要import java.util.regex.Pattern 和 java.util.regex.Matcher

public boolean isNumeric(String str){    Pattern pattern = Pattern.compile("[0-9]*");    Matcher isNum = pattern.matcher(str);    if( !isNum.matches() ){        return false;    }    return true; }

3、使用org.apache.commons.lang

org.apache.commons.lang.StringUtils; boolean isNunicodeDigits=StringUtils.isNumeric("aaa123456789"); http://jakarta.apache.org/commons/lang/api-release/index.html下面的解释: isNumeric public static boolean isNumeric(String str)Checks if the String contains only unicode digits. A decimal point is not a unicode digit and returns false. null will return false. An empty String ("") will return true. StringUtils.isNumeric(null)   = false StringUtils.isNumeric("")     = true StringUtils.isNumeric(" ")   = false StringUtils.isNumeric("123") = true StringUtils.isNumeric("12 3") = false StringUtils.isNumeric("ab2c") = false StringUtils.isNumeric("12-3") = false StringUtils.isNumeric("12.3") = false
Parameters: str - the String to check, may be null Returns: true if only contains digits, and is non-null

上面三种方式中,第二种方式比较灵活。

第一、三种方式只能校验不含负号“-”的数字,即输入一个负数-199,输出结果将是false;

而第二方式则可以通过修改正则表达式实现校验负数,将正则表达式修改为“^-?[0-9]+”即可,修改为“-?[0-9]+.?[0-9]+”即可匹配所有数字。

如果我输入的是"a“,它能识别出来这个不是数字,该怎么写?

import java.io.* ; import java.util.* ; public class Test{ public static void main(String [] args) throws Exception{ System.out.println("请输入数字:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in));    String line=br.readLine();     if(line.matches("\\d+"))     //正则表达式 详细见java.util.regex 类 Pattern    System.out.println("数字");    else    System.out.println("非数字"); } }

("\d")是数字0-9 ("\\d+")是什么意思?

正则表达式用两个斜杠表示一个斜杠,后面跟着一个加号表示出现一次或多次,完整的意思就是整个字符串中仅包含一个或多个数字。

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

更多java相关文章请关注java基础教程。

以上就是java判断变量是不是数字方法总结的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: java
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java多线程和并发面试题目(1~3题,附答案)

相关资讯