方法一: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,因此還不如這個工做由咱們本身來作,還免得再拋出一次異常...函數