方法一:java
public static boolean isNumeric1(String str) { Pattern pattern =Pattern.compile("[0-9]*"); return pattern.matcher(str).matches(); }
方法二:git
public static boolean isNumeric(String str) { if(str.matches("\\d*")) { return true; } else { return false; } }
public static boolean isNumeric(String str) { for (int i = str.length();--i>=0;) { if(!Character.isDigit(str.charAt(i))){ returnfalse; } } return true; }
public static boolean isNumeric(String str) { for (int i = str.length(); --i>=0;) { intchr = str.charAt(i); if(chr < 48 || chr > 57) return false; } return true; }
public static boolean isNumeric3(String str) { final String number = "0123456789"; for(int i = str.length(); --i>=0;) { if(number.indexOf(str.charAt(i)) ==-1){ return false; } } return true; }
public static boolean isNumeric00(String str) { try{ Integer.parseInt(str); return true; } catch (NumberFormatExceptione) { System.out.println("异常:\""+ str + "\"不是数字/整数..."); return false; } }
不提倡使用方法6,缘由以下:正则表达式
- NumberFormatException是用来处理异常的,最好不要用来控制流程的。
- 虽然捕捉一次异常很容易,可是建立一次异常会消耗不少的系统资源,由于它要给整个结构做一个快照。
看一下JDK源码:less
public static long parseLong(String s,intradix) throwsNumberFormatException { if(s ==null){ throw new NumberFormatException("null"); } if(radix throw new NumberFormatException("radix " + radix + " less thanCharacter.MIN_RADIX"); } if(radix >Character.MAX_RADIX){ throw new NumberFormatException("radix " + radix + " greater thanCharacter.MAX_RADIX"); } long result =0; boolean negative = false; int i = 0,max =s.length(); long limit; longmultmin; 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 digit =Character.digit(s.charAt(i++),radix); if(digit < 0){ throw newNumberFormatException(s); }else{ result = -digit; } } while(i // Accumulating negatively avoidssurprises near MAX_VALUE digit =Character.digit(s.charAt(i++),radix); if(digit <0){ throw newNumberFormatException(s); } if(result throw newNumberFormatException(s); } result *=radix; if(result < limit +digit){ throw newNumberFormatException(s); } result -=digit; } }else{ throw new NumberFormatException(s); } if(negative){ if(i >1){ return result; }else{ throw newNumberFormatException(s); } }else{ return -result; } }
能够看出来jdk里也是一个字符一个字符的判断,若是有一个不是数字就抛出NumberFormatException,因此还不如这个工做由咱们本身来作,还免得再抛出一次异常...函数