为什么 parseInt 在 java 中的项目 Euler #4 的代码中不起作用?

Why is parseInt not working in my code for project Euler #4 in java?

我尝试通过将我的数字转换为字符串、反转它,然后再将其转换回数字来解决 Project Euler #4。这个问题在我的代码中被注释掉了。

package euler.proj;

public class Main {

    public static void main(String[] args) {
        //A palindromic number reads the same both ways.
        // The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
        //Find the largest palindrome made from the product of two 3-digit numbers.
        int palindrome = 0;
        String reverse = "";
        for(int i = 100*100; i<= 999*999; i++){
            String pal = Integer.toString(i);
            for(int j = pal.length()-1; j >= 0; j--)
                reverse = reverse + pal.charAt(j);
            int k = Integer.parseInt(reverse);
            if (k == i)
                palindrome = k;
        }
        System.out.println("The largest palindromic product of two 3-digit numbers is " + palindrome);
    }
}

程序没有编译,IntelliJ 给出了这些错误:

线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“000011000120001”

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
at java.lang.Integer.valueOf(Integer.java:554)
at euler.proj.Main.main(Main.java from InputFileObject:15)

数字 000011000120001(或不同表示法的 11.000.120.001)不适合 4 字节 Integer(范围从大约 -2.147.000.000 到 2.147.000.000)。您可以为您的应用程序使用 Long.parseLong(number)

编辑:此外,您应该在您的 for 循环中移动 String reverse = "";,因为您目前正在将您正在测试的所有数字逐个附加到它,从而产生一个巨大的数字。