ProjectEuler - 最大的Palindrome产品返回0

时间:2018-03-20 01:23:47

标签: java palindrome

由于某种原因,以下代码在输出中产生0,我不知道为什么。

    long i = 999;
    long j = 999;
    long pal = 0;
    for(; i >= 100; i--) { //Practice: 99 * 99
        for(; j >= 100; j--) {
            long k = i * j; // 9801 999*999 ~= 999006
            String normal = String.valueOf(k);//String(9801)
            String palindrome = new StringBuffer(normal).reverse().toString();//String(1089)
            if (normal.equals(palindrome)) { //False
                if (Long.valueOf(normal) > pal) { //Is greater than
                    pal = Long.valueOf(normal); // pal =
                }
            }
        }
    }
    System.out.println(pal);

使用StringBuffer或Strings是一个问题吗?当for()循环设置为i时,它会返回答案。 0,不是i> = 100。

1 个答案:

答案 0 :(得分:0)

j达到100后,

i未重置。将初始化移动到for语句中,它属于:{/ p>

for(long i = 999; i >= 100; i--) {
    for(long j = 999; j >= 100; j--) {

Now it prints 906609.

作为旁注,请使用Long.parseLong()代替Long.valueOf(),以避免不必要的装箱和拆箱。