//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");