Valid Number

Valid Number

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

称号

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117727.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • windows系统上配置pip国内下载源

    windows系统上配置pip国内下载源

  • MessageDigest类的使用

    MessageDigest类的使用随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)在前面java中的MessageDigest类中简要介绍了它的一些作用和方法,下面给个例子,对文件和字符串MD5分别给了两个例子,代码如下:packagecom.home;importjava.io….

  • WeakHashMap初探「建议收藏」

    WeakHashMap初探「建议收藏」1、特点:随着时间的推移,其中的元素会被垃圾回收器回收2、涉及到的4中引用:强引用:(StrongReference)就是指在程序代码之中普遍存在的,例如以下代码:Objectobject=newObject();Stringstr=”hello”;强引用关联的对象在内存不够时也不会被垃圾回收器回收,回收时间:当前对象为null时被回收;软引用:(SoftRefe…

  • arp病毒查杀_arp病毒攻击有哪些典型现象

    arp病毒查杀_arp病毒攻击有哪些典型现象XX公司网络卡断问题1.问题现象2017年XX公司机关网络出现几次异常情况,并寻求内外部专家对异常情况进行诊断分析,均未找到原因,具体情况如下:1.XX分公司机关网络IP地址为10.0.0.1

  • 安装vagrant&virtualBox

    安装vagrant&virtualBox

    2021年10月28日
  • 关于DLL注入的理解

    关于DLL注入的理解DLL注入方式较多,包括API拦截与替换、消息钩子、远程进程。这些注入都是针对第三方程序(下面简称目标程序)的操作。目标程序主要分为两种,解释型和编译型。解析型可以在解释权解释之前做很多事情,比较简单,也比较可行。编译型则无法在编译前做任何事情,因为目标程序一般是第三方编译完成之后发布出来的。编译完成后就是二进制代码(即使能反汇编),就不存在变量名、函数名等标识符,因为这些标识符已经转换成响应的地址。这种情况下,如果拿不到真正的地址,则即使注入到主线程(UI线程)中,依然没有任何作用。除非程序调用的dll包

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号