zoukankan      html  css  js  c++  java
  • Valid Number

    称号

    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);
        }


  • 相关阅读:
    eclipse rcp 获取工程项目路径
    Eclipse RCP中添加第三方jar包的办法
    eclipse content assist 代码提示功能失效解决办法
    lwuit更改字体大小
    lwuit调整滚动条灵敏度值
    AWTEvent
    IE7 IE6去掉关闭提示框的解决方案
    jQuery多库共存最优解决方案
    电子商务网站 数据库产品表设计方案
    javascript操作cookie
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4606041.html
Copyright © 2011-2022 走看看