Project Euler#4 Java - 没有输出

时间:2016-12-17 17:42:13

标签: java

我写了这个:

class Problem4 {
  public static void main(String[] args) {
    int reversenum = 0;
    for (int i=100; i<1000; i++) {
      for (int j=100; j<1000; j++) {
        int tempPro = i*j;
        int temptempfun = tempPro;
        while (tempPro != 0) {
          reversenum *= 10;
          reversenum += tempPro%10;
          tempPro /= 10;
        }
        if (reversenum == temptempfun) {
          System.out.println(reversenum);
        }
      }
    }
  }
}

我运行时没有得到任何输出,我无法弄清楚我做错了什么。

修改

通过在内部for循环中移动reversenum声明来修复它。

class Problem4 {
  public static void main(String[] args) {
    int largest = 0;
    for (int i=100; i<1000; i++) {
      for (int j=100; j<1000; j++) {
        int tempPro = i*j;
        int temptempfun = tempPro;
        int reversenum = 0;
        while (tempPro != 0) {
          reversenum *= 10;
          reversenum += tempPro%10;
          tempPro /= 10;
        }
        if (reversenum == temptempfun) {
          if (reversenum > largest) {
            largest = reversenum;
          }
        }
      }
    }
    System.out.println(largest);
  }
}

3 个答案:

答案 0 :(得分:3)

两个整数reversenum和temptempfun在你的循环中并不相等。这就是为什么,它无法打印任何东西。

答案 1 :(得分:0)

在这一行:

int reversenum = 0;

你将reversenum定义为零并且在while循环中:

while (tempPro != 0) {
          reversenum *= 10;

您尝试将数字乘以零并再次将其分配给此变量。可能的问题在于这个逻辑。您应该为reversenum提供非零的初始值,并且应该在while循环之前清除它,因为reversenum变量将存储上一次迭代的值。

修改

您需要在Eclipse(如Eclipse)中调试代码。如果您这样做,那么您可以轻松了解代码中发生了什么。

答案 2 :(得分:0)

很明显reversenum试图扭转数量(检查回文),因此每次都需要改变(不受先前尝试的影响)。

此外,将其乘以0,当它为零时将保持为零。

这将打印一些东西(但你需要考虑如何找到你真正需要的答案)。

class Problem4 {
  public static void main(String[] args) {
    for (int i=100; i<1000; i++) {
      for (int j=100; j<1000; j++) {
        int reversenum = 0; //<- moved to change each time
        int tempPro = i*j;
        int temptempfun = tempPro;
        while (tempPro != 0) {
          reversenum *= 10;
          reversenum += tempPro%10;
          tempPro /= 10;
        }
        if (reversenum == temptempfun) {
          System.out.println(reversenum);
        }
      }
    }
  }
}