模数返回除以零异常

Posted

技术标签:

【中文标题】模数返回除以零异常【英文标题】:Modulus returning divide by zero exception 【发布时间】:2017-08-03 05:21:24 【问题描述】:

下面的代码在第 10 行抛出一个除以零的异常。

int s2=10,mn=20;
n = 4*s2;  
i = n-1; 
j = 1;
while(i!=0)
    j*=2;
    i--;

Random rand=new Random();
r = Math.abs(rand.nextInt(4*mn)) % j;  // this line returns divide by zero exception

【问题讨论】:

很好的定位。你有什么问题? 我想知道为什么,对于那个特殊情况。所有其他情况都可以正常工作 我认为它会发生,因为当您计算 2^40 时会出现整数溢出。 所以将数据类型更改为 long 可以解决问题,对吧?? 您的dowhile 吗? 【参考方案1】:

当你在玩大数字时,你一定会得到 Integer Overflow

【讨论】:

【参考方案2】:

你需要在try-catch块中做代码。所以catch块会捕获异常,你可以随意处理。

【讨论】:

以上是关于模数返回除以零异常的主要内容,如果未能解决你的问题,请参考以下文章

捕获异常:除以零

为啥整数除以零 1/0 会出错但浮点数 1/0.0 返回“Inf”?

在 M0+ 设备上除以零异常

Erlang中除以零的精确异常类型

为什么整数除以零1/0会给出错误,但浮点1 / 0.0会返回“Inf”?

Java基础 try...catch 处理ArithmeticException 除以零的异常