Java 中除以零异常
本文将演示在 Java 程序中除以零时会发生什么。除以零是未定义的操作,因为它在常规算术中没有意义。
虽然它经常与编程错误有关,但情况并非如此。根据 Java 除法运算定义,我们可以看一个被零整数除的场景。
Java 中整数除以零的异常情况
将实数除以零是一个数学过程,看起来相对容易,但缺乏明确和确凿的解决方案。因为定义的任何努力都会导致矛盾,所以这个操作的结果在技术上被认为是未定义的。
因为这是除法运算的一个特定示例,Java 将其识别为异常情况,并在运行时遇到它时抛出 ArithmeticException
。
public class dividebyzero {
public static int divide(int f, int g) {
int h = f / g;
return h ;
}
public static void main(String... args) {
int d = 8, r = 0;
int e = divide(d, r);
System.out.println(e);
}
}
输出:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at dividebyzero.divide(dividebyzero.java:3)
at dividebyzero.main(dividebyzero.java:8)
在 Java 中解决除以整数零异常
处理除以零的正确方法是确保 divisor
变量永远不会是 0
。
当输入无法控制,并且方程中存在零的可能性时,将其视为预期选择之一并相应地解决它。
这通常需要在使用除数之前检查除数的值,如下所示:
public class dividebyzero {
public static int divide(int f, int g) {
int h = f / g;
return h ;
}
public static void main(String... args) {
int d = 8, r = 0;
if (r != 0) {
int e = divide(d, r);
System.out.println(e);
} else {
System.out.println("Invalid divisor: division by zero can't be processed)");
}
}
}
输出:
Invalid divisor: division by zero can't be processed)
Java 包含一个名为 ArithmeticException
的特殊异常,用于处理计算中出现的异常情况。
在处理整数除以零等异常情况时,非常精确和小心是避免 ArithmeticException
的关键。
Java 中除以浮点零异常
顺便说一下,浮点值也有 -0.0;因此,1.0/ -0.0 是 -Infinity
。整数运算缺少这些值中的任何一个,而是抛出一个异常
。
例如,与 java.lang.ArithmeticException
不同,以下情况除以零时不会产生异常。它表达的是无限
。
int x = 0;
double y = 3.2500;
System.out.println((y/x));
这是因为你正在使用浮点数。Infinity
通过除以零返回,这与 not a number
或 NaN
相当。
如果你想避免这种情况,你必须在使用前测试 tab[i]
。然后,如有必要,你可以抛出自己的异常
。
每当你除以浮点零时,Java 都不会抛出异常
。当你除以整数零而不是双零时,这只会注意到运行时错误。
如果将 Infinity
除以 0.0
,结果是 Infinity
。
0.0
是一个双精度字面量,不被视为绝对零。没有异常
,因为双变量足够大,可以处理表示接近无穷大
的数字。
你可以使用下面显示的代码行来检查所有可能导致非有限数字的值,例如 NaN
、0.0
和 -0.0
。
if (Math.abs(tab[i] = 1 / tab[i]) < Double.POSITIVE_INFINITY){
throw new ArithmeticException("Result is non finite");
}
你也可以自己检查,然后抛出异常。
try {
for (int i = 0; i < tab.length; i++) {
tab[i] = 1.0 / tab[i];
if (tab[i] == Double.POSITIVE_INFINITY ||tab[i] == Double.NEGATIVE_INFINITY)
{ throw new ArithmeticException(); }
}
} catch (ArithmeticException xy) {
System.out.println("ArithmeticException occured!");
}
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,