Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ProjectEuler-返回0的最大回文乘积_Java_Palindrome - Fatal编程技术网

Java ProjectEuler-返回0的最大回文乘积

Java ProjectEuler-返回0的最大回文乘积,java,palindrome,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 =

出于某种原因,下面的代码在输出中生成一个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时,它会返回答案。

j在i达到100后不会重置。将初始化移到for语句中,它所属的位置:

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

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

您希望它打印什么?可能没有找到回文?不是很长。valueOfnormal不仅仅是k?@shmosel实际答案在900k范围内是正常的是k,我个人觉得更容易将其保留为stringAh,这很有意义。我想我是出于愚蠢的原因决定不做那件事的。谢谢没问题。如果这回答了你的问题,请。