【问题标题】:Java error in eclipseEclipse中的Java错误
【发布时间】:2014-06-25 03:57:55
【问题描述】:

每当我运行这段代码时:

package jmv;

public class euler3 {
    int x=0;
    public static void main(String[] args) {
        for (int x=0 ; x < 6008 ; x++){
            if(6008 % x == 0){
                System.out.println(x);
            }
        }

    }
}

我收到此错误:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at euler2.euler2.main(euler2.java:7)

这是什么意思,我该如何解决?

【问题讨论】:

  • for (int x=1 ; x
  • 以 x=1 开始循环。 Java 不允许你除以 0 零,因为它是未定义的
  • 您会收到该错误,因为您将数字除以零,导致未定义。尝试开始循环到 int x = 1
  • 对于我们这些已经在 J​​ava 和相关语言中工作了一段时间的人来说,这个错误消息是非常明显的。在第一次阅读时我什至没有注意到它使用符号 / 而不是单词divide。对于那些投反对票的人,试着回想一下这一切对你来说是什么时候。

标签: java eclipse


【解决方案1】:

错误正是它所说的 - 你不能除以零。在您的情况下,当您执行 if(6008 % x == 0) 时,您将采用 6008 和 0 的模数 - 这是未定义的。试试x=1 而不是x=0

【讨论】:

    【解决方案2】:

    你设置

    int x=0
    

    然后计算模数,即除以x的余数

    6008 % x
    

    如此有效地除以零,这是不可能的。尝试从 x = 1 开始;

    【讨论】:

      【解决方案3】:

      您的代码从 0 开始 x。这意味着,您的代码将尝试运行 6008 % 0,这会导致除以零错误。

      int x = 0 更改为 int x = 1 以解决此问题。

      【讨论】:

        【解决方案4】:

        这是由于除以零,因为模运算符 (%) 本质上是一个除法。

        改为从x=1 开始。

          public static void main(String[] args) {
                for (int x=1 ; x < 6008 ; x++){
                    if(6008 % x == 0){
                        System.out.println(x);
                    }
                }
        
            }
        

        【讨论】:

          【解决方案5】:

          x 从 1 开始,这样6008 % 0 可以避免导致错误的循环的第一次迭代..

          注意:如果为零,则必须在循环开始之前手动添加/打印。

          public class euler3 {
               public static void main(String[] args) {
                  for (int x=1 ; x < 6008 ; x++){
                      if(6008 % x == 0){
                          System.out.println(x);
                      }
                  }
               }
          }
          

          【讨论】:

          • 一小段文字解释说,改变循环使其从 1 开始可以避免除以零,这将是一个更好的答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-23
          • 1970-01-01
          • 1970-01-01
          • 2014-11-23
          • 1970-01-01
          相关资源
          最近更新 更多