public class Solution {
public static void main(String[] args) {
System.out.println(romanToInt("DCXXI"));
}
public static int romanToInt(String s) {
int ln = s.length()-1;
int ans = 0;
int i=0;
while (i <=ln){
if (s.charAt(i) == 'M'){
ans += 1000;
}else if (s.charAt(i) == 'D'){
ans += 500;
}else if (s.charAt(i) == 'C' && s.charAt(i+1)=='D'){
ans += 400;
i=i+1;
}else if (s.charAt(i) == 'C' && s.charAt(i+1)=='M'){
ans += 900;
i=i+1;
}else if (s.charAt(i) == 'C'){
ans += 100;
}else if (s.charAt(i) == 'L'){
ans += 50;
}else if (s.charAt(i) == 'X' && s.charAt(i+1)=='L'){
ans += 40;
i=i+1;
}else if (s.charAt(i) == 'X' && s.charAt(i+1)=='C'){
ans += 90;
i=i+1;
}else if (s.charAt(i) == 'X'){
ans += 10;
}else if (s.charAt(i) == 'V'){
ans += 5;
}else if (s.charAt(i)=='I' && s.charAt(i+1)=='V'){
ans += 4;
i=i+1;
}else if (s.charAt(i)=='I' && s.charAt(i+1)=='X'){
ans += 9;
i=i+1;
}else if (s.charAt(i)=='I'){
ans += 1;
}
i++;
System.out.printf("Current sum is: %s and current pointer i is: %s \n",ans, i);
}
return ans;
}
}
エラーメッセージが表示され続けます
java.lang.StringIndexOutOfBoundsException: 文字列インデックスが範囲外です: 5
しかし、どこが間違っていたのかわかりませんでした。誰かが私を助けることができますか?出力: これは D です 現在の合計は: 500 で現在のポインター i は: 1 これは C 現在の合計は: 600 で現在のポインター i は: 2 これは X 現在の合計は: 610 で現在のポインター i は: 3 これは X です現在の合計は: 620 で、現在のポインター i は: 4 スレッド「メイン」の例外 java.lang.StringIndexOutOfBoundsException: 範囲外の文字列インデックス: java.lang.String.charAt(不明なソース) で Solution.romanToInt(Solution. java:65) Solution.main (Solution.java:9) で