1. 程式人生 > >表示數值的字符串(Java實現)

表示數值的字符串(Java實現)

har str 表示 pre false div scan char log

請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

 1 public class Demo2 {  
 2 
 3     // 數組下標成員變量  
 4     int index;  
 5   
 6     public boolean isNumeric_2(char[] str) {  
 7         // 輸入異常  
 8         if (str == null)  
9 return false; 10 index = 0; 11 // 正負號開頭 12 if (str[index] == ‘+‘ || str[index] == ‘-‘) 13 index++; 14 if (index == str.length) 15 return false; 16 // 設置numeric判斷是否為數字 17 boolean numeric = true; 18 scanDigits(str);
19 if (index != str.length) { 20 // 小數 21 if (str[index] == ‘.‘) { 22 index++; 23 scanDigits(str); 24 if (index < str.length && (str[index] == ‘e‘ || str[index] == ‘E‘)) 25 numeric = isExponential(str);
26 } else if (str[index] == ‘e‘ || str[index] == ‘E‘) 27 numeric = isExponential(str); 28 else 29 // 出現了異常字符 30 numeric = false; 31 } 32 33 return numeric && index == str.length; 34 } 35 36 // 掃描數組,如果當前字符為數字,index++ 37 private void scanDigits(char[] str) { 38 while (index < str.length && str[index] >= ‘0‘ && str[index] <= ‘9‘) 39 index++; 40 } 41 42 // 判斷是否為科學計數法表示的數值的結尾部分 43 private boolean isExponential(char[] str) { 44 if (str[index] != ‘e‘ && str[index] != ‘E‘) 45 return false; 46 index++; 47 if (index == str.length) 48 return false; 49 if (str[index] == ‘+‘ || str[index] == ‘-‘) 50 index++; 51 if (index == str.length) 52 return false; 53 scanDigits(str); 54 // 如果存在特殊字符,index不會為str.length 55 return index == str.length ? true : false; 56 } 57 }

轉載自:http://blog.csdn.net/zjkc050818/article/details/72818475

表示數值的字符串(Java實現)