Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 除零误差_Java_Divide By Zero - Fatal编程技术网

Java 除零误差

Java 除零误差,java,divide-by-zero,Java,Divide By Zero,下面是代码(java): 这是我尝试运行它时收到的错误消息(它编译得很好): 所以这意味着我偏离了零,对吗?或者它意味着什么?我不知道我是怎么被零除的。出了什么问题 我假设任何形式为x%0的代码都会抛出此错误。您的代码没有防范这种可能性。因为您的递归调用: return (prime (a, b-1)) ; 您将在某个时刻使用b的值1调用prime。这意味着在第二种情况下,您将测试a%0。由于模运算符(%)本质上是一个除法,这就带来了被零除的问题 解决方案可能是在执行%之前,在您的情况下捕获此

下面是代码(java):

这是我尝试运行它时收到的错误消息(它编译得很好):


所以这意味着我偏离了零,对吗?或者它意味着什么?我不知道我是怎么被零除的。出了什么问题

我假设任何形式为
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