2016-12-17 46 views
-1

我写了这个:项目欧拉#4爪哇 - 无输出

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); 
     } 
     } 
    } 
    } 
} 

我没有得到任何输出,当我运行这个,我想不出什么我做错了。

编辑:

通过移动reversenum声明内内部for循环固定它。

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); 
    } 
} 
+1

试着把别人看看数字是什么,并有一个想法? – doctorlove

+0

尝试匹配他们给定的两位数字 - 无论如何都将更快地进行调试,然后尝试3位数字。 – doctorlove

回答

0

在这一行:

int reversenum = 0; 

要定义reversenum是零并且在while循环:

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

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

编辑:

你需要调试在IDE中的代码,比如Eclipse。如果你这样做,那么你可以很容易地理解你的代码中发生了什么。

+0

您的回答部分正确。我通过在inner for循环内移动reverseenum声明来修复我的代码。 – iFlames

3

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

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); 
     } 
     } 
    } 
    } 
} 
+0

当您在while循环中交换这两行时,它会将最终的反转数乘以10,并给出错误的输出。我所做的是并且正确地工作。 – iFlames

+0

很高兴你解决它 – doctorlove

+0

不知道为什么我交换行 - 把他们回来 – doctorlove