2015-11-05 68 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. –

相關問題