我試圖解決以下問題的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