我有一个字符串,我知道它只包含一个数字。
我想检查这个数字是int还是float。
答案 0 :(得分:13)
有很多方法可以解决您的问题,例如您可以使用try{}catch(){}
:
解决方案1
public static void main(String[] args) {
String str = "5588";
//check if int
try{
Integer.parseInt(str);
}catch(NumberFormatException e){
//not int
}
//check if float
try{
Float.parseFloat(str);
}catch(NumberFormatException e){
//not float
}
}
解决方案2
或者您可以使用正则表达式[-+]?[0-9]*\.?[0-9]+
:
boolean correct = str.matches("[-+]?[0-9]*\\.?[0-9]+");
有关详细信息,请查看此Matching Floating Point Numbers with a Regular Expression
答案 1 :(得分:1)
NumberUtils.isCreatable(String),它检查字符串是否是有效的Java数字。
log.info("false {} ", NumberUtils.isCreatable("NA.A"));
log.info("true {} ", NumberUtils.isCreatable("1223.589889890"));
log.info("true {} ", NumberUtils.isCreatable("1223"));
log.info("true {} ", NumberUtils.isCreatable("2.99e+8"));
希望这对某人有帮助。