Valid Number

题意:就是需要对一个字符串判断是否满足科学计数方法。
思路:科学计数法中只能出现数字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;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值