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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何制作ISO镜像文件

    如何制作ISO镜像文件在windows下,一般需要专用工具软件才能操作ISO文件。比如UltraISO、WinISO、WinImage、DaemonTools等。如果仅仅是想读取ISO文件中的内容,则可以用WinRAR

    2022年8月1日
    18
  • datagrid激活码【在线注册码/序列号/破解码】

    datagrid激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    50
  • Hadoop生态圈python + mapreduce + wordcount

    Hadoop生态圈python + mapreduce + wordcountHadoop生态圈python+mapreduce+wordcount启动hadoop进度发布文件hdfsdfs-put/home/hadoop/hadoop/input/user/hadoop/input查看hdfs现在有一些文件[hadoop@master0hadoop]$hdfsdfs-ls/Found1itemsdrwxr-xr-x-hadoopsupergroup02019-12-0402

    2022年5月21日
    45
  • 黑客养成秘籍_名媛修炼手册

    黑客养成秘籍_名媛修炼手册第一节、黑客的种类和行为以我的理解,“黑客”大体上应该分为“正”、“邪”两类,正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善,而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵或者做其他一些有害于网络的事情,因为邪派黑客所从事的事情违背了《黑客守则》,所以他们真正的名字叫“骇客”(Cracker)而非“黑客”(Hacker),也就是我们平时经常听说的“黑客”(Cacker

    2025年12月11日
    4
  • hdfs性能调优_spark写入hdfs文件太慢

    hdfs性能调优_spark写入hdfs文件太慢在集群的客户端使用hdf命令去查询的时候,出现一个响应特别慢的情况。同样的两个客户端节点,一个秒回,但是另一个可能需要数十秒才能响应。最终发现响应特别慢的原因是因为没有将hostname配置到/etc/hosts文件中…

    2022年9月26日
    5
  • stm32的语音识别_基于STM32的嵌入式语音识别模块设计

    stm32的语音识别_基于STM32的嵌入式语音识别模块设计引言服务机器人以服务为目的,因此人们需要一种更方便、更自然、更加人性化的方式与机器人交互,而不再满足于复杂的键盘和按钮操作。基于听觉的人机交互是该领域的一个重要发展方向。目前主流的语音识别技术是基于统计模式。然而,由于统计模型训练算法复杂,运算量大,一般由工控机、PC机或笔记本来完成,这无疑限制了它的运用。嵌入式语音交互已成为目前研究的热门课题。嵌入式语音识别系统和PC机的语音识别系统相比,虽然其…

    2022年6月26日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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