最近遇到判断数字的问题,简单总结了一下和大家分享~
//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 是特殊的非数字值 ...
解析使用js判断只能输入数字、字母等验证的方法(总结)js判断输入是否为正整数、浮点数等数字的函数代码javaScript 判断字符串是否为数字的简单方法javascript使用isNaN()函数判断变量是否为数字js判断输入是否中文,...
我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和null时都会得到object,详细请看js数据类型,这就是typeof的局限性,并不能准确的判断...
converseNumber.java 逆向输出数字 daffodilNumber.java 求水仙花数 division.java 演示整除结果 errorCompoundVariable.java 错误使用局部变量示例 factorial.java 求阶乘 Fibonacci.java 求Fiblnacci数列 ...
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 情景...
人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现,这用到Java中的Scanner类; 电脑则随机性出拳,由电脑产生随即数来实现,用到 Math.random() 方法; //Math.random():产生一个[0,1)之间的随机数 ...
实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与...
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上,能否作用在...
(第二题)编写Java Applet, 在public void paint(Graphics g)方法中加入实现要求功能的代码, 主要步骤是:从100到1000循环,判断每个数是否符合水仙花数的特点,是则输出之。 3.编译运行程序,观察输出结果是否正确...
判断一个文件或目录是否存在 如何读写文件 7.Java多态的实现(继承、重载、覆盖) 8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和...
// 是否追加数字 // Construction public: CCalculatorDlg(CWnd* pParent = NULL); // standard constructor …… 在CalCClatorDlg.Cpp文件中,在其成员函数框架中添加运行代码(自行添加的语句在下面的程序中均...
1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte上,能否作用在...
Java 2实用教程(第三版)实验指导与习题解答 清华大学出版社 (编著 耿祥义 张跃平) 实验模版代码 建议使用文档结构图 (选择Word菜单→视图→文档结构图) 上机实践1 初识Java 4 实验1 一个简单的应用程序 ...
15、怎么判断指定路径是否为目录 65 16、怎么获取指定路径下的全部文件 65 17、Java怎么读取文件和写入文件 65 18、java怎么复制文件 68 19、用JDBC如何调用存储过程 69 20、JDBC中的PreparedStatement相比Statement...