java中判断字符是不是数字问题?

原题:publicclassHH{publicstaticbooleanisNumberic(Stringstr){写函数。。System.out.println(isN... 原题:
public class HH {

public static boolean isNumberic(String str) {
写函数。。

System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.23"));
System.out.println(isNumberic("0x123"));
System.out.println(isNumberic("12acb3"));
System.out.println(isNumberic("-aa123"));
}
}
得出结果要是:
ture
ture
ture
false
false

我做了两次都有一点问题:
第一次:
public class HH {

public static boolean isNumberic(String str) {

if (str == null) {
return false;
}
int sz = str.length();
for (int i = 0; i < sz; i++) {
if (Character.isDigit(str.charAt(i)) == false) {
return false;
}
}
return true; }
public static void main(String[] args) {
System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.23"));
System.out.println(isNumberic("0x123"));
System.out.println(isNumberic("12acb3"));
System.out.println(isNumberic("-aa123"));
}
}
只能第一个ture,其他的是false了

第二次:
public class HH {

public static boolean isNumberic(String num) {
try {
Double.parseDouble(num);
return true;
}
catch (NumberFormatException e) {
return false;
}
}
public static void main(String[] args) {
System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.23"));
System.out.println(isNumberic("0x123"));
System.out.println(isNumberic("12acb3"));
System.out.println(isNumberic("-aa123"));
}
}
第3个又判断不准了。。我知道 我的方法有很多缺陷,就是0x123不好判断啊。。高手指点,,不胜感激!!
展开
 我来答
百度网友e1b1439
2007-11-06 · TA获得超过409个赞
知道小有建树答主
回答量:1064
采纳率:0%
帮助的人:665万
展开全部
你特别判断0开头的,把0或0x去了,就可以用Integer的parseInt(String s,int radix)的方法了,如先去掉0x,再用Integer.parseInt("AA",10),如果没有异常就是数字了,否则就不是,还有对我以前的答题错误表示抱歉,以前我的parseInt方法的参数记错了。另外欢迎访问我的个人网站:junqing124.vip2.upftp.com
百度网友70ae8e86ac
2007-11-07 · TA获得超过1304个赞
知道小有建树答主
回答量:815
采纳率:0%
帮助的人:1102万
展开全部
public static boolean isNumberic(String str) {

if (str == null) {
return false;
}
int sz = str.length();
for (int i = 0; i < sz; i++) {
if (Character.isDigit(str.charAt(i)) == false) {
return false;
}
}
return true; }

是你写的这个方法存在问题

你是把字符串拆分成字符数依次判断一个字符串里面的数字。
当遇到Character.isDigit(str.charAt(i)) == false 的时候就返回了,肯定是false,只有123 能return true;

-123.23 第一个遇到“-”号,显然,不是数字,返回false
0x123 遇到字母“O”,肯定返回false

“12acb3” 遇到“a”--false
“-aa123” 遇到“-”--false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-12-11 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

参考如下代码即可发现:

public class T {
    public static void main(String[] args) {
        System.out.println(isInt("12345"));
        System.out.println(isInt("abc"));
        System.out.println(isInt2("12345"));
        System.out.println(isInt2("abc"));
    }
    public static boolean isInt(String string) {
        return string.matches("\\d+");
    }
    public static boolean isInt2(String string) {
        try {
            Integer.parseInt(string);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
长木耳的木头
2007-11-06 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:103万
展开全部
你可以采用一个正则表达示来验证.
System.out.println(("123").matches("[0-9]*"));
.
.
.
这样在你以后的开发当中会更实用一些,希望对你有所帮助!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
山药是烤的8Q
2015-10-31 · 超过83用户采纳过TA的回答
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:97.6万
展开全部
单个字符
char ch='5';
if(ch>='0'&&ch<='9'){//数字
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式