java - 回文数的两种读法都是一样的。找到由两个 3 位数乘积组成的最大回文数

标签 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;
    }
}

最佳答案

你的问题很简单:

while (end = false)

应该符合您的意图:

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

否则,这意味着您将 false 分配给 end,然后评估 end,它始终为 false

作为引用,以后我建议您尝试使用调试器来处理此类情况。

关于java - 回文数的两种读法都是一样的。找到由两个 3 位数乘积组成的最大回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47181389/

相关文章:

java - Hashmap的实现

java - 重复按钮按住回调

Java找不到符号语法错误

java - 如何在java中用变量而不是硬编码数字在%s内字符串填充

Java:从列表中删除一系列索引

java - Android 中的线程和崩溃

java - 尝试将 uml 组合翻译成代码 [uml]

java - 查找给定投资组合的总值(value) : Java

java - 从纯文本中提取结构化数据

java - 在java中翻转图像