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

haoyanbinok 2007-11-06 07:58:16
java中判断字符是不是数字问题?

原题:
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不好判断啊。。高手指点,,不胜感激!!
...全文
588 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gere Yeung 2007-11-07
  • 打赏
  • 举报
回复
/*
public static boolean isNumberic(String str) {
return str.matches("([+-]?|(-\\+)*[-]?|(\\+-)*[+]?)(([1-9]\\d*(\\.\\d*)*)|(0[xX]\\p{XDigit}+)|(0[0-7]+))");
}
*/
5楼的什么意思?
lord_is_layuping 2007-11-07
  • 打赏
  • 举报
回复
([+-]?|(-\\+)*[-]?|(\\+-)*[+]?)(([1-9]\\d*(\\.\\d*)*)|(0[xX]\\p{XDigit}+)|(0[0-7]+))"

不懂
haung0512 2007-11-07
  • 打赏
  • 举报
回复
楼上的方法好!!学习...
  • 打赏
  • 举报
回复
用正则表达式吧,方便一些。

public class Test {    
public static void main(String[] args) {
System.out.println(isNumberic( "123.3"));
System.out.println(isNumberic( "-123.23"));
System.out.println(isNumberic( "-0x123"));
System.out.println(isNumberic( "12acb3"));
System.out.println(isNumberic( "-aa123"));
System.out.println(isNumberic( "+-+-017"));
System.out.println(+-+011);
}
public static boolean isNumberic(String str) {
return str.matches("([+-]?|(-\\+)*[-]?|(\\+-)*[+]?)(([1-9]\\d*(\\.\\d*)*)|(0[xX]\\p{XDigit}+)|(0[0-7]+))");
}
}
JhunHoonXZ 2007-11-07
  • 打赏
  • 举报
回复
[+-]?|(-\\+)*[-]?|(\\+-)*[+]?)(([1-9]\\d*(\\.\\d*)*)|(0[xX]\\p{XDigit}+)|(0[0-7]+)
不懂的去看
http://blog.csdn.net/mfkidt/archive/2006/10/13/1333364.aspx
lihaifeng0412 2007-11-07
  • 打赏
  • 举报
回复
看起来有点晕了
TOTTI-10 2007-11-06
  • 打赏
  • 举报
回复
看看这个吧
public class Number{
static boolean isNumberic(String num) throws NumberFormatException{
try{
Double.parseDouble(num);
}catch(NumberFormatException e){
return false;
}
return true;
}
public static void main(String[] args){
System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.45"));
System.out.println(isNumberic("ox12"));
System.out.println(isNumberic("1abc"));
System.out.println(isNumberic("-1a33"));
}
}
sharpyuce 2007-11-06
  • 打赏
  • 举报
回复
上面的indexOf()里面少写了"",不知道上面的方法行不行,没测试过~ 自己试试吧
sharpyuce 2007-11-06
  • 打赏
  • 举报
回复

让系统给你做嘛不就行了
public static boolean isNumberic(String str){
int i =0;
float f = 0;
try{
if(str.indexOf(.) > 0){
f = Float.parseFloat(str);
}
if(str.indexOf(0x) > 0)){
i = Integer.parseInt(str,16);
}
if(str.charAt(0)==0&& str.charAt(1)!= x){
i = Integer.parseInt(str,8);
}
i = Integer.parseInt(str);

}catch(NumberNotFormatException e){
return false;
}
return true;
}
cos100 2007-11-06
  • 打赏
  • 举报
回复
先说你第一次.就只有"123"里面没有含其他的字符 全是数字.所以是true.后面没一个字符串里面都含有非数字字符,所以结果当然全是false;

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧