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的数字,但我不明白为什么会发生这种情况。谁能给我解释一下吗
# 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 楼答案
我想你想要的是
j--
而不是j -= i
。尤其是因为i
从0开始