有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在我的代码中找不到euler项目4的错误

我试图解决以下问题:

Find the largest palindrome made from the product of two 3-digit numbers.

我有以下Java代码:

public static void main(String[] args) {
        int a = 999, b = 999;
        for(int i = 100; i <= a; i++) {
            for(int j = 100; j <= b; j++) {
                checkPalindrome(i*j, i, j);
            }
        }
    }

    public static void checkPalindrome(int n, int a, int b) {
        String s = "" + n;
        boolean palindrome = false;
        int j = s.length()-1;

        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) != s.charAt(j))
                break;
            j -= i;
        }

        if(palindrome)
            System.out.println(n + ", " + a + ", " + b);
    }

我仍然缺少“回文”变量的变化,但现在如果我运行它,我在第28行得到一个String index out of range,这是j -= i我只是不明白为什么会发生这种情况,我的意思是,我知道这种差异会导致一个小于0的数字,但我不明白为什么会发生这种情况。谁能给我解释一下吗


共 (2) 个答案

  1. # 1 楼答案

    你在增加i-你想减少j-你不想做j-=i

    否则,对于长度为5的字符串,您将得到:

    i=0,j=4

    i=1,j=4

    i=2,j=3

    i=3,j=1

    i=4,j=-2

    虽然如果它给出的是索引超出范围的消息,那么您运行的是另一个版本的代码-j-=我不可能生成它

  2. # 2 楼答案

    我想你想要的是j--而不是j -= i。尤其是因为i从0开始