Valid Number

 1 public class Solution {
 2     public boolean isNumber(String s) {
 3         // IMPORTANT: Please reset any member data you declared, as
 4         // the same Solution instance will be reused for each test case.
 5         if(s==null)
 6         return false;
 7     char[] sArr = s.trim().toCharArray();
 8 
 9     if(sArr.length==0)
10         return false;
11     if(sArr.length==1&&!Character.isDigit(sArr[0]))
12         return false;
13 
14     boolean decimalFound = false;
15     boolean eFound = false;
16     int end = sArr.length-1;
17     for(int i=0;i<=end;i++){        
18         char nextChar = i>=end?'x':sArr[i+1];
19         char prevChar = i<=0?'x':sArr[i-1];
20         switch(sArr[i]){
21         case '+':
22         case '-':
23             if(prevChar!='e'&&i!=0)
24                 return false;
25             if(prevChar=='e'&&i==end)
26                 return false;
27             if (i==0&&nextChar=='e')
28                 return false;
29             break;
30         case '.':
31             if(decimalFound || eFound)
32                 return false;
33             if(i>=end && i<=0)
34                 return false;
35             if(!Character.isDigit(prevChar) && !Character.isDigit(nextChar))
36                 return false;
37             decimalFound = true;
38             break;
39         case 'e':
40             if(eFound)
41                 return false;
42             if(!Character.isDigit(prevChar) && !Character.isDigit(nextChar)
43                 &&nextChar!='-'|| end==i || i==0){
44                         return false;                        
45             }
46             eFound = true;
47             break;
48         case ' ':
49             return false;
50         default:
51             if(!Character.isDigit(sArr[i]))
52                 return false;
53         }
54 
55     }
56     return true;
57     }
58 }
原文地址:https://www.cnblogs.com/jasonC/p/3433887.html