你特别判断0开头的,把0或0x去了,就可以用Integer的parseInt(String s,int radix)的方法了,如先去掉0x,再用Integer.parseInt("AA",10),如果没有异常就是数字了,否则就不是,还有对我以前的答题错误表示抱歉,以前我的parseInt方法的参数记错了。另外欢迎访问我的个人网站:junqing124.vip2.upftp.com
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
参考如下代码即可发现:
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;
}
}
}
你可以采用一个正则表达示来验证.
System.out.println(("123").matches("[0-9]*"));
.
.
.
这样在你以后的开发当中会更实用一些,希望对你有所帮助!
单个字符
char ch='5';
if(ch>='0'&&ch<='9'){//数字
}