这是我对ProjectEuler问题的解决方案4 “回文数字两种方式相同。由两个2位数字的乘积产生的最大回文数为9009 = 91×99。”找到由两个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;
}
}
答案 0 :(得分:1)
你的问题很简单:
while (end = false)
应该是你的意图:
while (end == false)
甚至更好while (!end)
否则,这意味着您要指定false
结束,然后评估end
,这始终为false
。
作为参考,将来我建议你尝试使用调试器来处理这种情况。