介绍
Java 中的 isFinite() 方法用于检查传入的 double 值是否为有限值。如果传入的 double 值是有限值,则返回布尔值 true;如果值为 NaN(非数字)或无穷大,则返回 false。在本实验中,你将学习如何使用 Java 的 isFinite() 方法。
Java 中的 isFinite() 方法用于检查传入的 double 值是否为有限值。如果传入的 double 值是有限值,则返回布尔值 true;如果值为 NaN(非数字)或无穷大,则返回 false。在本实验中,你将学习如何使用 Java 的 isFinite() 方法。
如果你的系统中尚未安装 Java,请下载最新版本并进行安装。通过运行以下命令来验证安装是否成功:
java -version
在 ~/project 目录下创建一个名为 DoubleIsFiniteDemo 的 Java 类。
cd ~/project
touch DoubleIsFiniteDemo.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 变量 d1、d2、d3 和 d4,分别赋值为有限值、正无穷大、负无穷大和 NaN。然后,使用 isFinite() 方法检查每个变量是否为有限值。
使用以下命令编译代码:
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.");
}
}
}
使用以下命令重新编译代码:
javac DoubleIsFiniteDemo.java
编译完成后,可以通过以下命令运行自定义的程序:
java DoubleIsFiniteDemo
根据你输入的值,程序将输出相应的结果。
在这一步中,我们将创建一个名为 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() 方法,该方法随后检查值是否为有限值并打印相应的结果。
使用以下命令重新编译代码:
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 代码,以观察 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_VALUE 和 MAX_VALUE 常量,分别将最小和最大的有限 double 值赋值给 d1 和 d2,并将正无穷大和 NaN 值分别赋值给 d3 和 d4。
使用以下命令重新编译并运行 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 代码。