当前位置: 首页 > 面试题库 >

Java除以零不会引发ArithmeticException-为什么?

孟承嗣
2023-03-14
问题内容

为什么这段代码没有抛出ArithmeticException?看一看:

public class NewClass {

    public static void main(String[] args) {
        // TODO code application logic here
        double tab[] = {1.2, 3.4, 0.0, 5.6};

        try {
            for (int i = 0; i < tab.length; i++) {
                tab[i] = 1.0 / tab[i];
            }
        } catch (ArithmeticException ae) {
            System.out.println("ArithmeticException occured!");
        }
    }
}

我不知道!


问题答案:

您为什么不能自己检查一下并抛出异常(如果您要的话)。

    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 ae) {
        System.out.println("ArithmeticException occured!");
    }


 类似资料:
  • 为什么这段代码不抛出?看一看: 我不知道!

  • 为什么结果是: =NaN =无穷大 我知道或除法有一点不同。我对得到的NaN非常满意,因为当某物除以零时,结果并不是定义的。但是为什么他们定义大于零除以零的结果是不独立呢?这和他们用来执行浮点除法的方法有关系吗?

  • 我在做一个Android计算器,除以零得到9.223372e+18。为什么不显示NaN或Crash?我认为它的结果是9.223372e+18,因为这是可能的最大的double值,因为我使用了double数据类型除以零。既然这会让用户感到困惑,我该如何绕过这个问题呢? 嗨,伙计们,谢谢你们的回复。我很感激。我在下面发布了我的代码。

  • 问题内容: 我以为应该使用十进制数字执行无限精度算术的答案。 考虑以下代码段: 我希望通过,但实际上执行程序甚至没有到达那里:引发原因! 事实证明,此行为已在API中明确记录: 在的情况下,精确商可具有无限长的十进制扩展数;例如,1除以3。如果商具有不间断的十进制扩展数,并且指定了该操作以返回精确的结果,则抛出an 。否则,将返回除法的精确结果,就像其他操作一样。 进一步浏览API,人们发现实际上

  • 问题内容: 为什么下面的Java代码 打印’Infinity’且未定义。这在数学上不是错吗? 问题答案: 在数学中,有许多支持算术的不同结构。最突出的数字(例如自然数,整数和实数)不包括无穷大。在那些系统中,不支持除以零。 其他系统的确包含至少一个无穷大。参见,例如,真实的投影线。它确实允许被零除。 只有一种方法可以知道在特定系统中数学定义或未定义的内容-研究该系统。 类似地,操作是可交换的(a

  • 问题内容: 谁能帮我找到执行的地方?我似乎找不到问题。 startTime变量是全局变量。 编辑:timeinSecs = 0如何?我似乎无法让调试器为BlackBerry JDE工作,所以有人将不得不帮助我:( timeTaken应该是从按下启动按钮的点到按下停止按钮的点所花费的时间,以毫秒为单位。 所有其他变量也是全局的 问题答案: 异常具有类型,这允许您查找类型并快速对问题进行分类。从文档中