Java 除零误差
下面是代码(java): 这是我尝试运行它时收到的错误消息(它编译得很好):Java 除零误差,java,divide-by-zero,Java,Divide By Zero,下面是代码(java): 这是我尝试运行它时收到的错误消息(它编译得很好): 所以这意味着我偏离了零,对吗?或者它意味着什么?我不知道我是怎么被零除的。出了什么问题 我假设任何形式为x%0的代码都会抛出此错误。您的代码没有防范这种可能性。因为您的递归调用: return (prime (a, b-1)) ; 您将在某个时刻使用b的值1调用prime。这意味着在第二种情况下,您将测试a%0。由于模运算符(%)本质上是一个除法,这就带来了被零除的问题 解决方案可能是在执行%之前,在您的情况下捕获此
所以这意味着我偏离了零,对吗?或者它意味着什么?我不知道我是怎么被零除的。出了什么问题 我假设任何形式为
x%0
的代码都会抛出此错误。您的代码没有防范这种可能性。因为您的递归调用:
return (prime (a, b-1)) ;
您将在某个时刻使用b的值1调用prime。这意味着在第二种情况下,您将测试a%0
。由于模运算符(%)本质上是一个除法,这就带来了被零除的问题
解决方案可能是在执行%之前,在您的情况下捕获此案例以强制执行b>2。尝试扭转这一局面
if ((a%(b-1) == 0) && (b>2))
到
发生的情况是,a%(b-1)
操作在b>2
测试之前执行
切换后,您正在利用。一旦b>2测试返回false,则无需计算模数(因此避免除法)
%
的数学含义是将A
除以B
,此操作的提示是C
。当B
为0
时,你会问:当我们除以0时,提醒是什么?。然而,在数学中,被零除是未定义的,这就是java.lang.arithmetricException
return (prime (a, b-1)) ;
if ((a%(b-1) == 0) && (b>2))
if ((b>2) && a%(b-1)==0)
A % B = C