Java Double IsFinite 方法

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

Java 中的 isFinite() 方法用于检查传入的 double 值是否为有限值。如果传入的 double 值是有限值,则返回布尔值 true;如果值为 NaN(非数字)或无穷大,则返回 false。在本实验中,你将学习如何使用 Java 的 isFinite() 方法。

设置 Java 环境

如果你的系统中尚未安装 Java,请下载最新版本并进行安装。通过运行以下命令来验证安装是否成功:

java -version

创建一个 Java 类

~/project 目录下创建一个名为 DoubleIsFiniteDemo 的 Java 类。

cd ~/project
touch DoubleIsFiniteDemo.java

编写 Java 代码

在这一步中,我们将使用 isFinite() 方法编写 Java 代码,以检查传入的 double 值是否为有限值。将以下代码复制并粘贴到 DoubleIsFiniteDemo.java 文件中:

public class DoubleIsFiniteDemo {
    public static void main(String[] args) {
        double d1 = 100.0;
        double d2 = Double.POSITIVE_INFINITY;
        double d3 = Double.NEGATIVE_INFINITY;
        double d4 = Double.NaN;

        boolean b1 = Double.isFinite(d1);
        boolean b2 = Double.isFinite(d2);
        boolean b3 = Double.isFinite(d3);
        boolean b4 = Double.isFinite(d4);

        System.out.println("Is d1 finite? " + b1);
        System.out.println("Is d2 finite? " + b2);
        System.out.println("Is d3 finite? " + b3);
        System.out.println("Is d4 finite? " + b4);
    }
}

上述代码声明了四个 double 变量 d1d2d3d4,分别赋值为有限值、正无穷大、负无穷大和 NaN。然后,使用 isFinite() 方法检查每个变量是否为有限值。

编译并运行 Java 代码

使用以下命令编译代码:

javac DoubleIsFiniteDemo.java

编译完成后,可以通过以下命令运行代码:

java DoubleIsFiniteDemo

程序的输出结果应为:

Is d1 finite? true
Is d2 finite? false
Is d3 finite? false
Is d4 finite? false

自定义程序

在这一步中,你可以自定义程序以测试不同的值。在你喜欢的文本编辑器中打开 DoubleIsFiniteDemo.java,并修改分配给 double 变量的值。例如:

public class DoubleIsFiniteDemo {
    public static void main(String[] args) {
        double d1 = 1.23;
        double d2 = 4.56;
        double d3 = Double.NEGATIVE_INFINITY;
        double d4 = Double.NaN;

        boolean b1 = Double.isFinite(d1);
        boolean b2 = Double.isFinite(d2);
        boolean b3 = Double.isFinite(d3);
        boolean b4 = Double.isFinite(d4);

        if (b1) {
            System.out.println("d1 is a finite double value.");
        } else {
            System.out.println("d1 is not a finite double value.");
        }

        if (b2) {
            System.out.println("d2 is a finite double value.");
        } else {
            System.out.println("d2 is not a finite double value.");
        }

        if (b3) {
            System.out.println("d3 is a finite double value.");
        } else {
            System.out.println("d3 is not a finite double value.");
        }

        if (b4) {
            System.out.println("d4 is a finite double value.");
        } else {
            System.out.println("d4 is not a finite double value.");
        }
    }
}

重新编译并运行 Java 代码

使用以下命令重新编译代码:

javac DoubleIsFiniteDemo.java

编译完成后,可以通过以下命令运行自定义的程序:

java DoubleIsFiniteDemo

根据你输入的值,程序将输出相应的结果。

在用户自定义方法中使用 isFinite() 方法

在这一步中,我们将创建一个名为 printIsFinite() 的用户自定义方法,该方法接收一个 double 值作为输入,并使用 isFinite() 方法打印该值是否为有限值。

DoubleIsFiniteDemo 类中添加以下方法:

public static void printIsFinite(double d) {
    if (Double.isFinite(d)) {
        System.out.println(d + " is a finite double value.");
    } else {
        System.out.println(d + " is not a finite double value.");
    }
}

然后,按如下方式修改 main() 方法:

public static void main(String[] args) {
    double d1 = 1.23;
    double d2 = 4.56;
    double d3 = Double.NEGATIVE_INFINITY;
    double d4 = Double.NaN;

    printIsFinite(d1);
    printIsFinite(d2);
    printIsFinite(d3);
    printIsFinite(d4);
}

main 方法将四个 double 变量分别传递给 printIsFinite() 方法,该方法随后检查值是否为有限值并打印相应的结果。

重新编译并运行 Java 代码

使用以下命令重新编译代码:

javac DoubleIsFiniteDemo.java

编译完成后,可以通过以下命令运行程序:

java DoubleIsFiniteDemo

程序的输出结果应为:

1.23 is a finite double value.
4.56 is a finite double value.
-Infinity is not a finite double value.
NaN is not a finite double value.

使用边界值测试 Java 代码

在这一步中,我们将使用边界值测试 Java 代码,以观察 isFinite() 方法的行为。

按如下方式修改 main() 方法:

public static void main(String[] args) {
    double d1 = Double.MIN_VALUE;
    double d2 = Double.MAX_VALUE;
    double d3 = Double.POSITIVE_INFINITY;
    double d4 = Double.NaN;

    printIsFinite(d1);
    printIsFinite(d2);
    printIsFinite(d3);
    printIsFinite(d4);
}

main 方法使用 Double 类的 MIN_VALUEMAX_VALUE 常量,分别将最小和最大的有限 double 值赋值给 d1d2,并将正无穷大和 NaN 值分别赋值给 d3d4

使用以下命令重新编译并运行 Java 代码:

javac DoubleIsFiniteDemo.java
java DoubleIsFiniteDemo

程序的输出结果应为:

4.9E-324 is a finite double value.
1.7976931348623157E308 is a finite double value.
Infinity is not a finite double value.
NaN is not a finite double value.

总结

在本实验中,你学习了如何使用 Java 的 isFinite() 方法来检查一个 double 值是否为有限值。你还学习了如何自定义程序以测试不同的值,如何在用户自定义方法中使用 isFinite() 方法,以及如何使用边界值测试 Java 代码。

您可能感兴趣的其他 Java 教程