为什么if语句不起作用?

时间:2013-12-30 05:57:50

标签: java boolean conditional-statements palindrome

我试图用Java解决Project Euler的问题。问题4.

http://projecteuler.net/problem=4

它说我必须找到由两个3位数字的产品制成的最大回文。

所以这是代码(只是不起作用的部分):

public class Problem4PE {
    public static void main(String[] args){
        int result = 0;
        Integer output = 0;

        for (int i = 100; i < 1000; i++) {
            for (int j = 100; j < 1000; j++) {
                output = i*j;
                String strout = output.toString();
                StringBuilder stb = new StringBuilder();

                char[] chrout = strout.toCharArray();
                for (int x = 0; x < chrout.length; x++) {
                    stb.append(chrout[x]);
                }
                StringBuilder stres = new StringBuilder("");
                for (int k = chrout.length-1; k > -1 ; k--) {
                    stres.append(chrout[k]);
                }
                String stbb = stb.toString();
                String string = stres.toString();
                Boolean bool = stbb.equals(string);
                if (bool){
                    result = output;
                }

            }
        }
        System.out.println(result);
    }
}

所以上面的输出出来了:580085 但是当我提交它时,它显示不正确。我不懂为什么。那么请你告诉我问题是在代码中,还是我在理解问题时犯了错误。

2 个答案:

答案 0 :(得分:4)

您的代码会跳过最大的产品。

result不能保证在for次循环的两次迭代之间增加,因此result的最终值不是最大值。

答案 1 :(得分:2)

试试这个

if (bool && output > result) { // a second if condition.
  result = output;
}

它给了我正确答案。