2016-07-10 1 views
1

なぜコードが機能しないのかわかりません。基本的に私はプロジェクトオイラー#4をコーディングしようとしています。これは2桁の3桁の数字を掛け合わせることで得られる最大のパリンドローム数です。このコードは動作していないようです(コンパイルされます)。コードを実行するたびに "0"が出力されます。私はそれがアルゴリズム的に効率的ではないかもしれないことは知っていますが、何が間違っていますか?プロジェクトオイラー#4:Java

public class Palindrome { 
public static void main (String [] args) { 

    int largestnum = 0; 
    Palindrome pp = new Palindrome(); 

    for (int i = 100; i <= 999; i++) { 
     for (int k = 100; k <= 999; k++) { 
      if (pp.checkPal(i * k) == true) { 
       largestnum = i * k; 
      } 
     } 
    }   

    System.out.println(largestnum); 
} 


public boolean checkPal(int y) { 
    String snum = Integer.toString(y); 
    int snum_length = snum.length() - 1; 
    String palindrome = new String(""); 

    for (int i = snum_length; i >= 0; i--) { 
     palindrome.concat(Character.toString(snum.charAt(i))); 
    } 

    if (snum.equals(palindrome)) { 
     return true; 
    } 
    else { 
     return false; 
    }  
} 
} 
+1

デバッガを使用するリーン、それは長期的にあなたに多くの時間を節約できます。 –

+1

forループに 'println'文があります。 –

+0

ああシュート。ただそれを実現しました。ありがとう。 – priya

答えて

3

Javaの文字列は不変です。

あなたがやっている:

palindrome.concat(Character.toString(snum.charAt(i))); 

これはpalindromeCharacter.toString(snum.charAt(i))の連結である新しい文字列を返す式です。 ではなく、を変更します。palindromeです。

あなたはこのようにそれを修正することができます:文字列を構築するためにStringBufferまたはStringBuilderを使用する方が良いでしょうが、

palindrome = palindrome.concat(Character.toString(snum.charAt(i))); 

+0

ありがとう!これは機能します。 – priya

1

checkPal関数内にprintステートメントがあるので、空白が表示されている可能性があります。あなたがpalindrome.concatを行う際

はまた、あなたはそうのような結果に回文を割り当てる必要があります: palindrome = palindrome.concat(Character.toString(snum.charAt(i)));

+0

ああ、はい。これは動作しますが、私は最大の回文を見つけるための比較がないと思います。ありがとうございました。 – priya

関連する問題