java校验正整数,java 参数校验

  java校验正整数,java 参数校验

  给定一个字符串,如何判断它是否是数值类型?例如,字符串100、5e2、-123、3.1416和-1E-16都表示数值,而12e、1a3.14、1.2.3、-5和12e 5.4则不是。

  本文将带你实现这个判断算法。欢迎感兴趣的开发者阅读本文。

  00-1010我们先来看数值的定义规则:表示数值的字符串遵循模式A[。[B]]或。B[eEC],其中:

  值B的整数部分后接小数部分,C后接E,或者E的指数部分后接小数部分。例如,十进制的. 123等于0.123。所以A部分没必要。如果一个数没有整数部分,那么它的小数部分不能为空。

  上面的A和C是可能以或-开头的0~9的数字串;b也是一个从0到9的数字串,但是它的前面不能有符号。我们以字符串123.45e 6为例,其中:

  23是它的整数部分A45是它的小数部分B 6是它的指数部分C判断一个字符串是否符合上述模式时,先扫描尽可能多的数字0到9(开头有可能有或-的),也就是前面模式中表示数值整数的部分A。如果遇到小数点。开始扫描表示数值小数部分的B部分。如果遇到E或E,开始扫描代表数字索引的C部分。

  梳理完以上内容,我们可以列出实现思路如下:

  (1)在字符串后添加结束标记;

  (2)使用全局索引遍历字符串;

  (3)设计一个函数扫描无符号整数(字符串中从0到9的数字),判断数字模式的B部分;

  (4)设计一个函数,扫描从0到9可以表示正或负或-的数字(类似于一个有正负符号的整数)作为开头,判断数字模式中的A和C部分;

  (5)从头扫描字符串,跳过头部空间,扫描一次全局索引增加一次:

  调用扫描有符号整数函数来扫描a部分。如果字符串包含小数点。调用扫描无符号整数函数扫描b部分,如果字符串包含E或E,调用扫描有符号整数函数扫描c部分(6)跳过尾部空格;

  (7)判断检查结果是否为真,全局索引是否增加到结束标记。

  接下来,我们以123.45e 6为例,画出上述进程的执行过程,如下图:

  00-1010一切准备就绪。接下来,我们来看看代码实现。

  扫描无符号整数函数的代码如下:

  class numerical check {//指针索引私有索引=0;//扫描无符号整数Private ScanUnsignedInteger(str 3360 string)3360 boolean { const before=this . index;while(str . charat(this . index)= 0 str . charat(this . index)= 9 ){ this . index;}之前返回this.index}}扫描有符号整数函数是在无符号的基础上加符号的判断,如下:

  //扫描有符号整数私有扫描整数(str 3360 string)3360 boolean {//判断是否包含符号if(str . charat(this . index)= str . charat(this . index)=-){ this . index;}//扫描无符号整数return this . scanunsignedinger(str);}最后从头到尾遍历字符串,结合以上两个函数判断字符串是否为数值。其代码如下:

  public是number(numStr : string): boolean { if(numStr==null numStr。length==0){返回false} //添加结束标志numStr=numStr //跳过首部的空格while(numstr。charat(这个。index)=“{ this。指数;} //扫描整数部分设数字=这个。扫描整数(numStr);//有小数点,处理小数部分if (numStr.charAt(this.index)=。){ this.index//小数两边只要有一边有数字即可,所以用 数值=this。scanunsignedinteger(numStr) numeric;} //有eE,处理指数部分if(numstr。charat(这个。index)= E numstr。charat(这个。index)= E ){ this。指数;//e E两边都要有数字,所以用数字=数字this。扫描整数(numStr);} //跳过尾部空格while(numstr。charat(这个。index)=“{ this。指数;}常量检查结果=numeric numstr。charat(这个。index)= ;//重置指针索引这个。索引=0;返回检查结果}完整代码请移步:数字检查。

  

实现思路

接下来,我们举几个例子,将其带入上述代码中,看下它能否正确执行,如下所示:

 

  设str= 123.45e 6const数值检查=新数值检查();设检查结果=数值检查。是数字(str);printCheckResult();str= .12e1check result=数值校验。是数字(str);printCheckResult();str= 12echeck结果=数字检查。是数字(str);printCheckResult();str= 1。2 .3 ;检查结果=数值检查。是数字(str);printCheckResult();函数打印检查结果(){控制台。日志(` s字符串${str}是否为数值校验结果为:$ {检查结果} `);}执行结果如下所示:

  示例代码文中所举代码的完整版请移步:

  数字检查测试到此这篇关于详解爪哇如何实现数值校验的算法的文章就介绍到这了,更多相关爪哇数值校验算法内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: