介绍
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
根据你输入的值,程序将输出相应的结果。
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()
方法,该方法随后检查值是否为有限值并打印相应的结果。
使用以下命令重新编译代码:
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 代码。