Java 中怎样判断一个字符串全是数字

 我来答
嗳你不知可否
2016-01-09 · TA获得超过7182个赞
知道大有可为答主
回答量:4507
采纳率:81%
帮助的人:1036万
展开全部

Java中判断字符串是否全是数字:

可以使用正则表达式:

public boolean isNumeric(String str) {  
        Pattern pattern = Pattern.compile("[0-9]*");  
        Matcher isNum = pattern.matcher(str);  
        if (!isNum.matches()) {  
            return false;  
        }  
        return true;  
    }

但是这个方法并不安全,没有对字符串进行空校验。 
在程序执行的时候很容易抛出异常。 
例如执行:  

public static void main(String[] args) {  
      
        String str = null;  
        System.out.println(BarcodeChecksum.INSTANCE.isNumeric(str));  
  
    }

就会抛出异常:

Exception in thread "main" java.lang.NullPointerException  
    at java.util.regex.Matcher.getTextLength(Matcher.java:1140)  
    at java.util.regex.Matcher.reset(Matcher.java:291)  
    at java.util.regex.Matcher.<init>(Matcher.java:211)  
    at java.util.regex.Pattern.matcher(Pattern.java:888)  
    at com.ossez.bcu.util.BarcodeChecksum.isNumeric(BarcodeChecksum.java:37)  
    at com.ossez.bcu.util.BarcodeChecksum.main(BarcodeChecksum.java:53)

所以这个方法并不准确。 

如果执行:

public static void main(String[] args) {  
        String str = "";  
        System.out.println(BarcodeChecksum.INSTANCE.isNumeric(str));  
    }

将会返回 true。 
这说明这个方法没有对空字符串进行校验。 
可以使用 Apache 的 StringUtils.isNumeric() 函数进行判断。 
这个函数位于 org.apache.commons.lang.StringUtils;  中。 
但是,需要注意,如果传入参数为 "" 同样也会你存在判断不准确的情况,这时候需要首先对需要进行判断的参数进行非空校验,然后删除传入数据中的空格。

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

上面这个函数将会返回 true。 
请先 trim 数据

匿名用户
2019-03-26
展开全部

方法有很多,个人觉得使用异常捕捉非常方便,上代码:

public static boolean isNumeric(String str){//捕获NumberFormatException异常

if (str != null) str = str.trim();//" 3 "自动去空格再判断

try{

Integer.parseInt(str);

return true;

}catch(NumberFormatException e){

System.out.println("异常:\"" + str + "\"不是数字/整数...");

return false;

}

}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jhjhy123
2015-06-12 · 超过67用户采纳过TA的回答
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:58.5万
展开全部
String info = "";
try {
Integer.valueOf(info);
System.out.println("都是数字");
} catch (Exception e) {
System.out.println("有不是数字的字符");
}

这样子

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-06-12
展开全部
判断字符串是否为数字:
public static boolean isNumeric(String str){
for (int i = str.length() ; --i>=0 ; ){
if (!Character.isDigit(str.charAt ( i ) ) ){
return false;
}
}
return true;
}

2>用正则表达式
public static boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
return pattern.matcher(str).matches();
}

3>用ascii码

public static boolean isNumeric(String str){
for(int i=str.length();--i>=0 {
int chr=str.charAt ;
if(chr<48 || chr>57)
return false;
}
return true;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式