我试图解决以下问题的4号:无法找到我的代码错误项目欧拉
查找两个3位数字的乘积的最大回文。
我有以下的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的数字,但我无法弄清楚为什么会发生这种情况。有人能解释我吗?
没有多少考虑,不会不断地从'j'中减去越来越大的数字,最终使它成为'<0'?也许你想总是把'j'设置为'string - 1 - i'的长度? – 2012-01-28 02:05:49