原文地址:http://blog.sina.com.cn/s/blog_7bac470701014mjf.html

判断字符串是否为数字

//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 
           
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{  
     
throw new
NumberFormatException(s);

}  
   
}else{  
    
return  
-result;  
   
}  
 }

可以看出来jdk里也是一个字符一个字符的判断,如果有一个不是数字就抛出NumberFormatException,所以还不如这个工作由我们自己来做,还省得再抛出一次异常...

[转]Java中怎样判断一个字符串能否转成数字的更多相关文章

  1. java中如何判断一个字符串是否包含另外一个字符串的方法

    indexOf(String s)的使用,如果包含,返回的值是包含该子字符串在父类字符串中起始位置: 如果不包含必定全部返回值为-1 package my_automation; public cla ...

  2. Java中怎样判断一个字符串是否是数字?

    1:正则表达式 public static void main(String[] args) { String str = "123456456456456456"; boolea ...

  3. Java中如何判断一个字符串是否为数字

    方法一:异常处理 public static boolean isInteger(String str){ try { Integer i = Integer.parseInt(str); retur ...

  4. java中怎么判断一个字符串中包含某个字符或字符串

    public static void main(String[] args) { String str="ABC_001"; ){ System.out.println(" ...

  5. java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”

    在javascript中有一个方法isDigit()使用来判断一个字符串是否都是数字,在java的字符串处理方法中没有这样的方法,觉得常常需要用到,于是上网搜了一下,整理出了两个用正则表达式匹配的判断 ...

  6. Oracle中如何判断一个字符串是否含有汉字

    看到网友问,怎么查询表中某个字段数据是不是包含了全角字符啊? 这个问题涉及到几个函数:to_single_byte.length和lengthb,我之前做开发的时候研究的是如何判断一个字符串中是否包含 ...

  7. js中如何判断一个字符串包含另外一个字符串?

    js中判断一个字符串包含另外一个字符串的方式比较多? 比如indexOf()方法,注意O是大写. var test="this is a test"; if(test.indexO ...

  8. 在Java中用正则表达式判断一个字符串是否是数字的方法

    package chengyujia; import java.util.regex.Pattern; public class NumberUtil { /** * 判断一个字符串是否是数字. * ...

  9. Java中如何判断一个日期字符串是否是指定的格式

    判断日期格式是否满足要求 import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date ...

随机推荐

  1. UVA 12169 Disgruntled Judge【扩展欧几里德】

    题意:随机选取x1,a,b,根据公式xi=(a*xi-1+b)%10001得到一个长度为2*n的序列,奇数项作为输入,求偶数项,若有多种,随机输出一组答案. 思路:a和b均未知,可以考虑枚举a和b,时 ...

  2. 第10章 同步设备I/O和异步设备I/O(1)_常见设备及CreateFile函数

    10.1 打开和关闭设备 10.1.1 设备的定义——在Windows中可以与之进行通信的任何东西. (1)常见设备及用途 设备 用途 用来打开设备的函数 文件 永久存储任何数据 CreateFile ...

  3. UIGrid/UITable 性能优化

    性能优化 排行榜,邮件,关卡等数据列表项,一般在玩家打开面板时,都会重新刷新一次数据,那是否有必要每次都生成列表项呢? 假如每次列表的内容有变动就Instance 新的Gameobject,这是没有必 ...

  4. 《你不常用的c#之二》:略谈GCHandle

    我们在使用c#托管代码时,内存地址和GC回收那不是我们关心的,CLR已经给我们暗箱操作.但是如果我们在c#中调用了一个非托管代码,比如vc的DLL,而且他有个回调函数,需要引用c#中的某个对象并操作, ...

  5. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  6. Stunnel服务端

    Stunnel on Debian GNU/Linux 6 (squeeze) 传统的POP3, SMTP, Samba等服务,都是不加密的协议(即在网络上明文传输数据),通过stunnel,可以将访 ...

  7. HTML 学习笔记 CSS3 (边框)

    CSS3边框 通过CSS3边框 你能够创建远角边框 向矩形边框添加阴影 使用图片来绘制边框 . CSS3的边框属性 主要包含以下几种 border-radius 边框圆角 box-shadow 边框阴 ...

  8. Swift关于Any,AnyObject,AnyClass的区别与联系

    在Swift语言中,协议定义类或结构体应该遵守的变量和方法集合,如下所示,这个一个标准的协议的声明: protocol NSObjectProtocol { func isEqual(object: ...

  9. Delphi项目的构成

    Hello.cfg 項目配置文件 Hello.dof 項目選項文件 Hello.dpr 項目文件 Hello.exe 應用程序 Hello.res 資源文件 HelloWorld.dcu 窗口編譯文件 ...

  10. 利用ThinkPHP自带的七牛云驱动上传文件到七牛云以及删除七牛云文件方法

    一.准备工作 1.注册七牛云账号 2.选择对象储存->创建空间->设置为公开 3.在config配置文件中添加以下代码 'UPLOAD_FILE_QINIU' => array ( ...