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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue.js跨域_vueaxios跨域请求

    vue.js跨域_vueaxios跨域请求最近公司能的项目使用前后端分离,前端开发请求接口数据的时候碰到了跨域问题,解决方案如下一、SimpleCORSFilter工具类在项目Util类中新建类SimpleCORSFilter实现Filter接口packagecom.how2java.tmall.util;importjava.io.IOException;importjavax.servlet.Filter…

    2022年9月27日
    2
  • MySQL最新版8.0.21安装配置教程~

    MySQL最新版8.0.21安装配置教程~MySQL最新版8.0.21安装教程

    2022年5月26日
    34
  • jdk下载与安装[通俗易懂]

    1.JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html安装完成后,需要进行环境变量的配置,右键我的电脑—属性—-高级系统设置就会看到下面的界面:2.点击环境变量,开始坏境变量的配置:(1)点击系统变量下的新建按钮,变量名JAVA_HOME(代表你的JDK安装路径),值对应的是你的JDK的安装路径。(2)继续在系统变量里面新建一个CLASSPATH变量,其变量值如下图所示:….

    2022年4月3日
    44
  • 面试压力测试题情景题_压缩弹簧经常使用会发生什么

    面试压力测试题情景题_压缩弹簧经常使用会发生什么题解状态压缩dp,f[i][j]代表第i行状态为j的方案数#include<bits/stdc++.h>using namespace std;#define x first#define y second#define send string::npos#define lowbit(x) (x&(-x))#define left(x) x<<1#define right(x) x<<1|1#define transformu(s) tr..

    2022年8月8日
    5
  • 怎么安装pycharm及环境变量配置_JRE环境配置

    怎么安装pycharm及环境变量配置_JRE环境配置pycharm安装以及其环境的配置说明此次我们使用win10系统安装pycharm的64位社区版,并且对Anaconda3中自带的Python3进行环境的配置,如果您没有Anaconda3甚至是没有Python3环境,可以参考Anaconda3安装教程及说明,如果您的pip源未更改,这里推荐您改为使用国内的pip源,这样可以更快的下载组件,方法见修改pip源至国内镜像网站。教程从开始菜单中找到你的AnacondaPrompt并打开…

    2022年8月25日
    9
  • 大公司为什么都有API网关?没你想的那么简单!

    大公司为什么都有API网关?没你想的那么简单!

    2022年2月14日
    53

发表回复

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

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