回文数字两种方式相同。找到由两个3位数字

时间:2017-11-08 13:48:10

标签: java

这是我对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;
    }
}

1 个答案:

答案 0 :(得分:1)

你的问题很简单:

while (end = false)

应该是你的意图:

while (end == false)甚至更好while (!end)

否则,这意味着您要指定false结束,然后评估end,这始终为false

作为参考,将来我建议你尝试使用调试器来处理这种情况。