📜  java como comprobar que un numero es entero? - Java (1)

📅  最后修改于: 2023-12-03 15:31:29.325000             🧑  作者: Mango

Java中如何判断一个数字是否为整数?

Java中有多种方法来判断一个数字是否为整数。以下是最常见的三种方法。

方法一:使用isInteger()方法

Java中的Integer.parseInt()方法可以将一个字符串转换成整数,如果转换失败会抛出NumberFormatException异常。我们可以利用这个特性来判断一个字符串是否是整数。具体步骤如下:

public static boolean isInteger(String str) {
    try {
        Integer.parseInt(str);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}

这个方法接受一个字符串参数,返回一个布尔值。如果字符串可以被成功转换成整数,则返回true,否则返回false。

方法二:使用数学运算判断

整数可以被除以1得到整数,而非整数除以1得到的是小数。因此我们可以利用这个特性,通过对输入的数字做除法的方式判断它是否是整数。具体步骤如下:

public static boolean isInteger(double num) {
    return num == Math.floor(num);
}

这个方法接受一个双精度浮点数参数,返回一个布尔值。如果参数可以被除以1得到整数,则返回true,否则返回false。

方法三:使用正则表达式判断

正则表达式可以用来匹配字符串中的特定模式。我们可以利用正则表达式来判断一个字符串是否是整数。具体步骤如下:

public static boolean isInteger(String str) {
    return str.matches("^-?\\d+$");
}

这个方法接受一个字符串参数,返回一个布尔值。如果字符串符合整数的格式,则返回true,否则返回false。

实例
public static void main(String[] args) {
    String str1 = "123";
    String str2 = "123.45";
    String str3 = "abc";
    
    double num1 = 123;
    double num2 = 123.45;
    
    System.out.println(str1 + " is integer: " + isInteger(str1));
    System.out.println(str2 + " is integer: " + isInteger(str2));
    System.out.println(str3 + " is integer: " + isInteger(str3));
    
    System.out.println(num1 + " is integer: " + isInteger(num1));
    System.out.println(num2 + " is integer: " + isInteger(num2));
}

输出结果:

123 is integer: true
123.45 is integer: false
abc is integer: false
123.0 is integer: true
123.45 is integer: false

可以看到,只有整数的字符串和双精度浮点数可以被正确地判断为整数。