首页 > 解决方案 > 在没有 ArithmeticException 的情况下除以零

问题描述

在尝试编写真值表时,我试图找出算法,并找到了一个可行的算法。但是现在我不明白为什么它不会抛出 ArithmeticException。

for(int i=0; i<Math.pow(2, numberOfInputs()); i++)
    {
        for(int j=0; j<numberOfInputs(); j++)
        {
            System.out.print("" + i/(int) Math.pow(2, j)%2 + "\t");

        }
        System.out.println("");
    }

当 numberOfInputs() 返回 2 尝试此操作时,我得到:

Truthtable
0   0   
1   0   
0   1   
1   1   

但我不明白这是怎么回事,因为 Math.pow(2, j)%2 将是 =0 多次?!

标签: javaoopif-statementmathtruthtable

解决方案


这是因为优先级,这是先执行的:i/(int) Math.pow(2, j),然后取模。第一个表达式永远不会被零除。更多关于它的文档


推荐阅读