Validate if a given string is numeric.
Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true
Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.
题目:判断一个string是否为有效的数字表达式。
思路:字符串中可能出现‘+’、‘-’、‘.‘、’E‘、’e‘、'0-9'
分情况讨论
(1)去除string首部和尾部的空格;
(2)输入+’、‘-’
(3)'0-9'
(4)‘.‘ 前有数字或后有数字
(5)’E‘、’e‘前必须有数字,后+’、‘-’、'0-9'
public static boolean isNumber(String s) {
s=s.trim();
int i=0;
int n=s.length();
if(i < n && (s.charAt(i) == '+'|| s.charAt(i)=='-'))
i++;
boolean numFlag=false;
while (i<n&&Character.isDigit(s.charAt(i))){
i++;
numFlag=true;
}
if(i < n && s.charAt(i) == '.'){
i++;
while (i<n&&Character.isDigit(s.charAt(i))){
i++;
numFlag=true;
}
}
if(numFlag && i < n && (s.charAt(i) == 'e'||s.charAt(i) == 'E')){
i++;
numFlag=false;
if(i < n && (s.charAt(i) == '+'|| s.charAt(i)=='-'))
i++;
while (i<n&&Character.isDigit(s.charAt(i))){
i++;
numFlag=true;
}
}
return numFlag&&i==n;
}