我编写了一个方法,该方法接受一个字符串,如果它是一个有效的单个整数或浮点数,则返回true;否则,返回false。
我的代码:
public static boolean isDigit(String s)
{
boolean b;
try
{
Integer.parseInt(s);
b = true;
}
catch (NumberFormatException e)
{
b = false;
}
try
{
Double.parseDouble(s);
b = true;
}
catch (NumberFormatException e)
{
b = false;
}
return b;
}
我确信有更好的书写方式。谢谢
答案 0 :(得分:2)
您不需要检查它是否为int
,因为int
的数字也可以解析为double
。可以简化为:
public static boolean isDigit(String s)
{
boolean b;
try
{
Double.parseDouble(s);
b = true;
}
catch (NumberFormatException e)
{
b = false;
}
return b;
}
答案 1 :(得分:0)
您也可以使用正则表达式执行此操作。
public static boolean isDigit(String s){
String regex = "[0-9]*\\.?[0-9]*";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
boolean b = m.matches();
return b;
}
答案 2 :(得分:0)
您可以简单地执行以下操作:
return s.matches("[+-]?\\d+(\\.\\d+)?");
如果为“。”是小数点的分隔符
答案 3 :(得分:0)
最轻巧的解决方案就是这个,同样也是为了提高代码的可读性:
public boolean isDigit(String str) {
try {
Integer.parseInt(str)
return true;
} catch (NumberFormatException: e) { return false }
}
答案 4 :(得分:0)
使用Apache Commons StringUtils.isNumeric()检查String是否为有效数字
示例:-
StringUtils.isNumeric(“ 123”)= true StringUtils.isNumeric(null)=假StringUtils.isNumeric(“”)=假StringUtils.isNumeric(“”)=假