java - 看不到我在哪里除以 0?

标签 java dividebyzeroexception

这是我认为任何人都需要能够评估我的问题的所有代码

1 import.java.util.Scanner
2 public class ccattano_Sieve{
3         private boolean []  primes = new boolean [50001];
4         private int upper;
5         private int lower;
6 
7         public ccattano_Sieve(){
8             upper = 50000;
9             lower = 1;
10            for (int i = 2; i < primes.length; i++){
11                primes[i] = true;
12            }
13            primes[0] = false;
14            primes[1] = false;
15        }
16 
17        public void processSieve(){
18            for (int i = 2; i < Math.round(Math.sqrt(50000)); i++){
19                if (primes[i] == true){
20                    for (int c = 2; c < (primes.length - 1); i++){
21                        if (c % i == 0){
22                            primes[c] = false;
23                        }
24                        else{
25                            primes[c] = true;
26                        }
27                    }
28                }
29            }
30        }

我很确定我在第 24 - 26 行的 else 语句是不需要的,我在尝试解决问题时添加了它。但是在第 21 行尝试运行代码时,我收到一个被零除的错误。具体错误如下。

Exception in thread "main" java.lang.ArithmeticException: / by zero
at ccattano_Sieve.processSieve(ccattano_Sieve.java:21)
at ccattano_SieveTest.main(ccattano_SieveTest.java:7)

这一行“at ccattano_SieveTest.main(ccattano_SieveTest.java:7)”调用了我粘贴的代码,因此可以忽略它。所以第 21 行是主要问题,我找不到解决方案。

最佳答案

模数运算符是“除法的其余部分”,意味着它涉及除法。

我相信您在第 20 行中有一个错误,您在其中递增 i 而不是 c。 这意味着 i 变量会溢出(达到如此高以至于它会变成负数)并最终变成 0。

关于java - 看不到我在哪里除以 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16073309/

相关文章:

c++ - 在 Visual Studio 2019 C++ 中使用 CPPUnitTest 编写 "DivideByZero"单元测试用例时出现问题

java - 什么决定了java除法运算中的Nan和Infinity

java:如何查找初始值为零并出现错误 "/by zero"的值

java - LibGDX - Android 上的鼠标按钮

c# - 为什么 int 和 decimal 会抛出 DivideByZeroException 但 float 不会?

java - Dagger2 + Mockito : How to Unit Test this scenario?

Java:在表中显示ArrayList中的所有数据

java - ArithmeticException 除以零...如何修复此方法?

java - 从对象创建 Jackson ObjectNode

java - 如何使用共享首选项将所有地址值存储在单个键中