これは私のコードです。答えは常に100001(そのループを実行しても さえないようです)です。 私はこの問題を解決するはるかに簡単な方法があることを知っていますが、この特定のコードで正確に何が間違っていますか?どのように修正するのですか?Project Eulerのプログラム4のJavaコードで何が問題になっていますか? (2 3桁の数値の最大の回文を見つける)
public class LargestPalindromes
{
public static void main(String[] args)
{
int largest = 100001;
for(int i = 100; i < 1000; i++)
{
for(int j = 100; j < 1000; j++)
{
int mult = i * j;
if(largest < mult && isPalindrome(mult))
largest = mult;
}
}
System.out.printf("\n\nThe largest palindrome is: %d\n\n", largest);
}
public static boolean isPalindrome(int mult)
{
int n1=0, n2=0, n3=0, n4=0, n5=0, n6=0;
int largest = 0, count = 0, p =100000;
int x = mult;
while(count < 6)
{
if(count == 1)
n1 = x/p;
else if(count == 2)
n2 = x/p;
else if(count == 3)
n3 = x/p;
else if(count == 4)
n4 = x/p;
else if(count == 5)
n5 = x/p;
else if(count == 6)
n6 = x/p;
x %= p;
p /= 10;
count++;
}
int reverse = Integer.valueOf(String.valueOf(n1) + String.valueOf(n2) + String.valueOf(n3) + String.valueOf(n4) + String.valueOf(n5) + String.valueOf(n6));
return reverse == mult;
}
}
もしあれば、予想される出力を説明してください! –
結果は906609で、2桁の3桁の数字の乗算で形成される最大の回文桁ですが、私の結果は常に100001です。私の最後からの入力はありません。 –