package week_01;
/*
* 罗马数字转整数
* 字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。
* */
public class Day_6 {
public int romanToInt(String s) {
int result = 0;
//左大则减,反之相加
int num = getValue(s.charAt(0));
for (int i =1 ; i< s.length(); i++){
int num_1 = getValue(s.charAt(i));
if (num < num_1)
// {
result -= num;
// System.out.println(result);
// }
else result += num;
// System.out.println("循环结束:"+result);
num = num_1;
}
result += num;
// System.out.println("结果:"+result);
return result;
}
public int getValue(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;
}
return 0;
}
public static void main(String[] args) {
new Day_6().romanToInt("MCMXCIV");
}
}