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

为什么parseInt在我的java Euler#4项目代码中不起作用?,java,palindrome,parseint,Java,Palindrome,Parseint,我试图通过将我的数字转换为字符串、反转并将其转换回数字来解决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 pr

我试图通过将我的数字转换为字符串、反转并将其转换回数字来解决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);
    }
}

数字
000011100120001
(或不同符号中的
11.000.120.001
)不适合4字节
整数
(范围约为-2.147.000.000至2.147.000.000)。您可以为您的应用程序使用
Long.parseLong(number)


编辑:此外,您应该移动
String reverse=“”在for循环中,因为您当前正在将要测试的所有数字依次添加到for循环中,从而产生一个巨大的数字。

数字
000011100120001
(或
11.000.120.001
以不同的符号表示)不适合4字节
整数
(范围约为-2.147.000.000到2.147.000.000). 您可以为您的应用程序使用
Long.parseLong(number)


编辑:此外,您应该移动
String reverse=“”在for循环中,因为您当前正在将要测试的所有数字依次添加到for循环中,导致了一个巨大的数字。

这就是出现异常的原因。但是您应该仍然能够在问题中使用
int
值,因为您的最大值应该只有999*999。仔细观察
reverse
变量在每个循环中发生的情况。这似乎不起作用。。它只是给出了一个更大数字的错误。有没有什么方法可以让我剖析循环,看看每次迭代都会发生什么?这意味着你的算法很可能会产生错误的结果,结果会越来越大。您可以使用
System.out.println(…)
在结果之间打印,以手动验证它们,并找出代码在何处产生意外结果。您应该移动
String reverse=“”在for循环中。现在,它会追加你检查的每个数字,而不是按数字运行你的逻辑!我把绳子移到我的环中,它就起作用了。非常感谢你,彼得12345!你帮了大忙,这就是为什么会有例外。但是您应该仍然能够在问题中使用
int
值,因为您的最大值应该只有999*999。仔细观察
reverse
变量在每个循环中发生的情况。这似乎不起作用。。它只是给出了一个更大数字的错误。有没有什么方法可以让我剖析循环,看看每次迭代都会发生什么?这意味着你的算法很可能会产生错误的结果,结果会越来越大。您可以使用
System.out.println(…)
在结果之间打印,以手动验证它们,并找出代码在何处产生意外结果。您应该移动
String reverse=“”在for循环中。现在,它会追加你检查的每个数字,而不是按数字运行你的逻辑!我把绳子移到我的环中,它就起作用了。非常感谢你,彼得12345!你帮了大忙。你不需要转换成字符串,然后再转换回来来反转它。你可以通过一个循环和基本的算术运算来完成。而且,你不需要搜索所有的数字。从范围的顶部开始,向下搜索,直到找到第一个(最大的)回文,然后停止。您不需要转换为字符串,然后再转换回以反转它。你可以通过一个循环和基本的算术运算来完成。而且,你不需要搜索所有的数字。从范围的顶部开始,向下搜索,直到找到第一个(最大的)回文,然后停止。
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)