2015-11-05 86 views
-3

我在Java的欧拉做了这个,它只是一直打印0。我不知道我做错了什么,请帮忙吗?我不知道为什么这不起作用

class Euler 
{ 

    public static void main (String[]args) 
    { 
    int a = 0; 
    int b = 0; 
    int c = 0; 
    int d = 0; 
    int e = 0; 
    int f = 0; 
    int palindrome = 0; 
    boolean run = true; 
    while (run == true) { 
     for (int f4 = 999; f4 >= 100; f4--) { 
     for (int f5 = f4; f5 >= 100; f5--) { 
      palindrome = f4 * f5; 
      f = (palindrome % 10); 
      e = (palindrome % 100 - f); 
      d = (palindrome % 1000 - e); 
      c = (palindrome % 10000 - d); 
      b = (palindrome % 100000 - c); 
      a = (palindrome % 1000000 - b); 
      if (a == 0) { 
      if ((b == f) && (c == e)) { 
       run = false; 
      } 
      } else { 
      if ((a == f) && (b == e) && (c == d)) { 
       run = false; 
      } 
      } 
     } 
     } 
    int[] nums = new int[1]; 
    nums[0] = palindrome; 
    { 
    System.out.println(Arrays.toString(nums)); 
    } 
} 
    } 
} 

它应该算出由两个三位数的乘积组成的最大回文。

+0

使用调试器或放入printf语句看看它在做什么。 – rghome

回答

3

你的循环是从来没有进入。当你说,

for (int f4 = 999; f4 == 100; f4--) { 

999== 100,因此该循环被跳过。我认为你想要

for (int f4 = 999; f4 >= 100; f4--) { 

和你的下一个循环相同的问题。

for (int f5 = f4; f5 >= 100; f5--) { // <-- not == 100 
+0

是不是循环只输入一次? –

+0

我真是个白痴,我一直都有这个问题,但我仍然不记得它。 – ptgflyer

+5

@ P45Imminent No. –

相关问题