2017-11-08 3 views
1

ProjectEulerの問題に対するこのソリューション4 "2つの2桁の数字の積から作られた最大の回文は9009 = 91×99。 2つの3桁の数字の積から作られた最大のパリンドロームを探します。回文数字は同じ方法で読み込みます。 2つの3桁の数字の積から最大の回文を見つける

このプログラムを実行すると、コンソールには何も表示されず、なぜ私のコードに問題がないのかわかりません。

public class Problem4 
{ 
    static boolean end = false; 
    public static void main(String[] args) 
    { 
     int multiplier = 999; 
     int product = 0; 
     while(end = false) 
     { 
      product = multiplier * 999; 
      isPalindrome(product); 
      multiplier--; 
     } 
    } 
    public static Boolean isPalindrome(int number) 
    { 
     int b = (Integer.valueOf(number).toString().length() - 1); 
     char[] storage = new char[Integer.valueOf(number).toString().length()]; 
     char[] reverse = new char[Integer.valueOf(number).toString().length()]; 
     for(int i = 0; i < Integer.valueOf(number).toString().length(); i++) 
     { 
      storage[i] = (Integer.valueOf(number).toString().charAt(i)); 
     } 
     for(int a = 0; a < Integer.valueOf(number).toString().length(); a++) 
     { 
      reverse[a] = storage[b]; 
      b--; 
     } 
     String compare = ""; 
     for(int x = 0; x < Integer.valueOf(number).toString().length(); x++) 
     { 
      compare += reverse[x]; 
     } 
     if (compare.equals(Integer.valueOf(number).toString())) 
     { 
      System.out.println(number); 
      end = true; 
      return true; 
     } 
     return false; 
    } 
} 

答えて

1

あなたの問題は簡単です:

while (end = false)

はあなたの意図にする必要があります:

while (end == false)またはwhile (!end)

さらに良いそうでなければ、それはあなたが最後にfalseを割り当てていることを意味し、次にendを評価します。常にfalseです。

今後、このような場合には、デバッガの使用をお勧めします。

関連する問題