题目:
Input is guaranteed to be within the range from 1 to 3999.
本题是把一个罗马数字转化为阿拉伯数字。我按照千位、百位、十位、个位的顺序依次处理罗马数字。
public class RomanToInteger {
public int convert(char c) {
switch (c) {
case 'I':
return 1;
case 'V':
return 5;
case 'X':
return 10;
case 'L':
return 50;
case 'C':
return 100;
case 'D':
return 500;
case 'M':
return 1000;
default:
return 0;
}
}
public int romanToInt(String s) {
int result = 0;
char[] c = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if (i > 0 && convert(c[i]) > convert(c[i - 1])) {
result += (convert(c[i]) - 2 * (convert(c[i - 1])));
} else {
result += convert(c[i]);
}
}
return result;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
RomanToInteger roman = new RomanToInteger();
int number;
number = roman.romanToInt(string);
System.out.println(number);
}
}