如何检验输入的是不是数字
public class Alone12_3{
static boolean isNumberic(String num){
//这里插入代码
public static void main(String[] args){
System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.45"));
System.out.println(isNumberic("0x12"));
System.out.println(isNumberic("1abc"));
System.out.println(isNumberic("-1a33"));
}
}
尝试了很久都没搞清楚~希望高手指点
问题点数:50、回复次数:8Top
1 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 16:39:03 得分 0
最简单的办法
try {
int n = Integer.parse(s);
return true;
} catch (NumberFormatException e) {
return false;
}
当然你也可以用正则表达式。
或者通过Character.isDigit来逐字判断。当然这种情况下你要自己判断第一个字母是不是负号。Top
2 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 16:47:21 得分 0
如果用正则表达式:
import java.util.regex.*;
....
return java.util.regex.Pattern.matches("^-{0,1}\\d+$", num);
Top
3 楼jzzc001()回复于 2006-11-04 16:57:38 得分 0
你的方法只可以检验第1个是true~其他的都是flase,不只要检验Int类型的还要检验long,double,还有进制的数~~望高手再次指点~先谢了Top
4 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-04 17:06:14 得分 50
我只是一个示例,把多几类似的方法组合起来就可以检查这些数了。如果是0x开始的,就用Integer.parseInt(s, 16)来转换。
当然,用正则表达式的情况就好办得多:
import java.util.regex.*;
public class Test {
public static boolean isNumberic(String s) {
if (Pattern.matches("^-{0,1}\\d*\\.{0,1}\\d+$", s)) {
return true;
}
if (Pattern.matches("^0[x|X][\\da-eA-E]+$", s)) {
return true;
}
return false;
}
public static void main(String[] args) {
System.out.println(isNumberic("123"));
System.out.println(isNumberic("-123.45"));
System.out.println(isNumberic("0x12A"));
System.out.println(isNumberic("1abc"));
System.out.println(isNumberic("-1a33"));
}
}Top
5 楼jzzc001()回复于 2006-11-04 19:33:11 得分 0
真的是谢谢!!!!!Top
6 楼jzzc001()回复于 2006-11-04 19:36:57 得分 0
如果用Integer.parseInt(num)的方法是不是会复杂一点~~有时间的话请帮我用这个方法写一下好吗Top
7 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2006-11-05 00:10:36 得分 0
如果只是判断,用 Double.parseDouble() 方法就可以了,这个可以包含正/负、整数/小数等情况。只是有0x前缀的时候要判断一下。Top
8 楼jzzc001()回复于 2006-11-06 13:37:29 得分 0
高手!!!谢谢Top




