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 中的异常:字符串索引超出范围:5 at java.lang.String.charAt(Unknown Source) at Solution.romanToInt(Solution. java:65) 在 Solution.main(Solution.java:9)