Valid Number

来源:互联网 发布:围棋打谱软件下载 编辑:程序博客网 时间:2024/05/22 13:26

题意:就是需要对一个字符串判断是否满足科学计数方法。
思路:科学计数法中只能出现数字0到9、e、E、‘.’、+、-这些字符。因此就是需要判断这些字符出现的条件。
首先:0到9在任何位置出现都是合法的;e或者E必须满足:前面不能有e或者E出现过,而且不能是第一个或者是最后一个出现;’.’出现的条件是:前面不能有小数点出现,而且不能是第一个或者是最后一个出现;+和-出现的条件是:必须在第一位或者在e和E后面出现,而且+、-后面接的必须是数字;
代码:
public class ValidNumber {
public boolean isNumber(String s){
if(s == null || s.length() == 0) return false;
boolean dotflag = false;
boolean eflag = false;
for(int i = 0 ; i < s.length() ; i++){
switch (s.charAt(i)) {
case '.':
if(dotflag || eflag || (i == 0 || !(s.charAt(i-1)>0 && s.charAt(i-1) <= 9) ||
(i == s.length() -1 || s.charAt(s.length()-1) > 0 && s.charAt(s.length()-1) <=9)))
return false;
dotflag = true;
break;
case '+':
case '-':
if(i>0 && (s.charAt(i-1)!='e' && s.charAt(i-1)!='E') ||
(i == s.length()-1 || !(s.charAt(i+1) >='0' && s.charAt(i+1)<= '9'))
|| s.charAt(i+1)=='.' )
return false;
break;
case 'e':
case 'E':
if(eflag || i == 0 || i == s.length()-1 )
return false;
eflag = true;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
break;
}
}
return true;
}

0 0