博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Valid Number
阅读量:5960 次
发布时间:2019-06-19

本文共 2643 字,大约阅读时间需要 8 分钟。

称号

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.

方法

分下面几个步骤: 
1. 将字符串的最前面和最后面的空格去掉。
2. 推断是否有e。并依据有e的情况进行推断:e前面是浮点。e后面必须是整形。

3. 没有e,则推断整个字符串是不是浮点。注意字符串前面的正负号别忘了。

PS:能够将使用小数点和e将字符串划分成3部分,进行推断。仅仅须要遍历一遍字符串。

能够參考:
private boolean isDouble(String s) {    	if (s.charAt(0) == '-' || s.charAt(0) == '+') {    		if (s.length() == 1) {    			return false;    		} else {    			s = s.substring(1);    		}    	}        int len = s.length();        boolean hasPoint = false;        boolean pointNext = false;        boolean pointPre = false;        for(int i = 0; i < len; i++) {            char cur = s.charAt(i);            if (cur == '.') {                if (hasPoint) {                    return false;                } else {                    hasPoint = true;                }            } else if (cur>= '0' && cur <= '9') {                if (hasPoint) {                    pointNext = true;                } else {                    pointPre = true;                }            } else {                return false;            }        }        if (hasPoint && (pointNext == false && pointPre == false)) {            return false;        } else {            return true;        }    }            private boolean isInteger(String s) {    	if (s.charAt(0) == '-' || s.charAt(0) == '+') {    		if (s.length() == 1) {    			return false;    		} else {    			s = s.substring(1);    		}    	}        int len = s.length();        for (int i = 0; i < len; i++) {            char cur = s.charAt(i);            if (!(cur>= '0' && cur <= '9')) {                return false;            }        }        return true;    }            public boolean isNumber(String s) {        if (s == null || s.length() == 0) {            return false;        }                 //        while(!s.equals("") && s.charAt(0) == ' ') {            s = s.substring(1);        }        while(!s.equals("") && s.charAt(s.length() - 1) == ' ') {            s = s.substring(0, s.length() - 1);        }        if (s.equals("")) {            return false;        }                int len = s.length();        for (int i = 0; i < len; i++) {            char cur = s.charAt(i);            if (cur == 'e') {                if ((i == 0 || i == len - 1)) {                    return false;                } else {                     return isDouble(s.substring(0, i)) && isInteger(s.substring(i + 1));                }            }         }        return isDouble(s);    }

转载地址:http://uuuax.baihongyu.com/

你可能感兴趣的文章
微软承诺2018年前数据中心将使用50%可再生能源
查看>>
互联网+新生活:智慧城市建设的亳州样本
查看>>
这是一个国内只有寥寥数人懂得的云计算技术
查看>>
告别“看家护院” 银行安防需树立“大安全”观
查看>>
物联网崛起,新技术如雨后春笋般
查看>>
用户为中心:华为消费者云服务背后揭示了啥?
查看>>
太阳能2017年首季业绩“预喜”
查看>>
火爆:Snapchat成App Store搜索量/频率最高应用
查看>>
大多数漏洞通报前都会先在这里曝光
查看>>
People Power 公司入选中国移动数字家庭联盟,共同推进智能家居战略
查看>>
CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
查看>>
NetApp针对其集群化方案“不值得升级”言论回击Wikibon
查看>>
QQ把游戏放进聊天框,这一点Facebook和微信都没做到
查看>>
在线匿名之父意欲终结“加密战争”
查看>>
WLAN市场销量逐步逼近有线网络
查看>>
SDN市场或许进入了慢热期
查看>>
教你使用Linux系统的Shell脚本维护Oracle
查看>>
浅谈物联网的保障措施
查看>>
力龙信息布局大数据领域
查看>>
大数据巧治职业差评师 生存空间锐减九成
查看>>