最近遇到判断数字的问题,简单总结了一下和大家分享~
//1、正则表达式
public static boolean isNumeric1(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}
//2、java自带函数
public static boolean isNumeric2(String str){
for (int i = str.length();--i>=0;){
if (!Character.isDigit(str.charAt(i))){
return false;
}
}
return true;
}
//3、正则表达式
public static boolean isNumeric(String str){
if(str.matches("\\d
*")){
return true;
}else{
return false;
}
}
//4、判断ASCII码值
public static boolean isNumeric0(String str){
for(int i=str.length();--i>=0;){
int chr=str.charAt(i);
if(chr<48 || chr>57)
return false;
}
return true;
}
//5、逐个判断str中的字符是否是0-9
public static boolean isNumeric3(String str){
final String number = "0123456789";
for(int i = 0;i<str.length();i++){
if(number.indexOf(str.charAt(i)) == -1){
return false;
}
}
return true;
}
//6、捕获NumberFormatException异常
public static boolean isNumeric00(String str){
try{
Integer.parseInt(str);
return true;
}catch(NumberFormatException e){
System.out.println("异常:\"" + str + "\"不是数字/整数...");
return false;
}
}
ps:不提倡使用方法6,原因如下:
1、NumberFormatException是用来处理异常的,最好不要用来控制流程的。
2、虽然捕捉一次异常很容易,但是创建一次异常会消耗很多的系统资源,因为它要给整个结构作一个快照。
看一下JDK源码:
public static long parseLong(String s,int radix)
throws NumberFormatException
{
if(s == null){
throw new NumberFormatException("null");
}
if(radix < Character.MIN_RADIX){
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
if(radix > Character.MAX_RADIX){
throw new NumberFormatException("radix " + radix +
" greater than Character.MAX_RADIX");
}
long result = 0;
boolean negative = false;
int i = 0,max = s.length();
long limit;
long multmin;
int digit;
if(max > 0){
if(s.charAt(0) == '-'){
negative = true;
limit = Long.MIN_VALUE;
i++;
}else{
limit = -Long.MAX_VALUE;
}
multmin = limit / radix;
if(i < max){
digit = Character.digit(s.charAt(i++),radix);
if(digit < 0){
throw new NumberFormatException(s);
}else{
result = -digit;
}
}
while(i < max){
// Accumulating negatively avoids surprises near MAX_VALUE
digit = Character.digit(s.charAt(i++),radix);
if(digit < 0){
throw new NumberFormatException(s);
}
if(result < multmin){
throw new NumberFormatException(s);
}
result *= radix;
if(result < limit + digit){
throw new NumberFormatException(s);
}
result -= digit;
}
}else{
throw new NumberFormatException(s);
}
if(negative){
if(i > 1){
return result;
}else{/* Only got "-" */
throw new NumberFormatException(s);
}
}else{
return -result;
}
}
可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...
未完,待大家一起续~~~欢迎大家共享好的方法~~~
分享到:
相关推荐
javascript中判断变量是否为数字的方法,这里主要介绍javascript里的 isNaN() 函数。 功能: isNaN() 函数用于检查其参数是否是非数字值。 语法: isNaN(x) x 必需。要检测的值。 返回值: 如果 x 是特殊的非数字值 ...
我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和null时都会得到object,详细请看js数据类型,这就是typeof的局限性,并不能准确的判断...
解析使用js判断只能输入数字、字母等验证的方法(总结)js判断输入是否为正整数、浮点数等数字的函数代码javaScript 判断字符串是否为数字的简单方法javascript使用isNaN()函数判断变量是否为数字js判断输入是否中文,...
converseNumber.java 逆向输出数字 daffodilNumber.java 求水仙花数 division.java 演示整除结果 errorCompoundVariable.java 错误使用局部变量示例 factorial.java 求阶乘 Fibonacci.java 求Fiblnacci数列 ...
读者需要使用日期计算和循环语句来判断是否今天生日。这个练习题可以帮助读者理解日期计算和循环语句的基本结构和使用方法。 知识点:日期计算,循环语句,条件语句 九、计算用户输入的日期离 1900 年 1 月 1 日...
Java 中的标识符可以是字母、数字、下划线(_)、美元符号($)和 Unicode 字符。 不合法的标识符有:*point、_endline; 3. Java 变量 Java 变量可以是整数类型(byte、short、int、long)、浮点数类型(float、double...
首先,我们使用一个循环来遍历 101-200 之间的所有数字,然后使用一个内部循环来判断每个数字是否是素数。如果某个数字不能被 2 到 sqrt(这个数) 之间的任何数字整除,那么它就是一个素数。最后,我们输出所有素数和...
3、编写一个趣味性Java Applet小程序,根据界面上随机生成或任意输入的一个日期型数据,判断是否闰年,算 出是周几,同时判断对应的星座与性格,输出星座图片。 三、实验步骤与源程序 第一题 import java.util....
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
判断一个字符串是否是合法的java标识符;使用StringBuffer;IP地址转化成整数,整数转化成IP地址; 十八为身份证格式验证;表达式解析器;字符串编码的转换;字符串对齐器;密码加密和验证(MD5); 制作命令行程序...
地包含有main()方法 4、编程示例中的功能实现的程序代码 在该Java程序中,获得用户从键盘中输入的一个数字变量,然后判断所输入的这个数 字是否为素数,并打印出判断的结果。 (1)程序代码示例 package ...
判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和...
1.4.1 基本功训练1——更换java_home环境变量 16 1.4.2 基本功训练2——提取path变量值创建新环境变量 17 1.4.3 基本功训练3——输出字符表情 17 1.4.4 基本功训练4——输出“*”字符组成的三角形 18 1.5 情景...
- 判断一个文件或目录是否存在 - 如何读写文件 7. Java 多态的实现(继承、重载、覆盖) - 继承是面向对象程序设计中的一种机制,可以实现代码的重用。 - 重载是指多个方法名相同,但参数列表不同的方法。 - ...
人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现,这用到Java中的Scanner类; 电脑则随机性出拳,由电脑产生随即数来实现,用到 Math.random() 方法; //Math.random():产生一个[0,1)之间的随机数 ...
实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与...
首先,我们声明两个整型变量 i 和 sum,分别表示数字和数字的立方和。然后,我们使用 for 循环来实现数字的计算过程,直到满足条件为止。 代码实现: ```java for (int i = 100; i ; i++) { int sum = 0; for ...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和...