Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查字符串是float还是int?_Java_String_Int - Fatal编程技术网

Java 如何检查字符串是float还是int?

Java 如何检查字符串是float还是int?,java,string,int,Java,String,Int,我有一个字符串,我知道它只包含一个数字 我想检查这个数字是int还是float。有很多方法可以解决您的问题,例如,您可以使用尝试{}catch(){}: 解决方案1 public static void main(String[] args) { String str = "5588"; //check if int try{ Integer.parseInt(str); }catch(NumberFormatException e){

我有一个字符串,我知道它只包含一个数字


我想检查这个数字是int还是float。

有很多方法可以解决您的问题,例如,您可以使用
尝试{}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

或者您可以使用regex
[-+]?[0-9]*\.?[0-9]+

boolean correct = str.matches("[-+]?[0-9]*\\.?[0-9]+");

有关更多详细信息,请查看此晚到派对。在Apache Commons NumberRutils类中

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"));

希望这对其他人有所帮助。

您有任何尝试吗?欢迎来到Stack Overflow!我们是一个问答网站,而不是一个编码出租服务。请将您的问题缩小到一个特定的编码问题,这将是本网站的主题。请参阅:建议作为解决方案的正则表达式无效。它不接受负号,它接受奇怪的字符串,比如
3.
,甚至只是
@jbx。这是正确的,这是我开始学习正则表达式的很长一段时间以来的事。我纠正了我的错误,希望这能帮到更多的忙。是的,新的看起来不错
\\d
仍然可以代替
[0-9]
工作,但在这种情况下,目的可能更明确(因为它正在解析一个数字)。Integer.parseInt(“1”)和
Float.parseFloat(“1”)
都不会引发异常