题目
这一题的思路为:判断字符串,若前一位字符小于后一位,则减去后一位减去前一位;否则则前一位加上后一位;
代码的具体实现:
public static void main(String[] args) {
String s= "XV";
int sum=0;
int start=transform(s.charAt(0)); //选取首位为第一位字符
for(int i=1;i<s.length();i++) {
//采取for方法对每一位都进行比对
int end=transform(s.charAt(i));
if(start<end)
sum-=start;
else
sum+=start;
start=end;
//判断完成后,将后一项赋值给前一项,进行循环
}
sum+=start; //因为在进行完最后两位判断后,只剩下最后一个字符
//被赋值给前面那一项,
//所以最后在和上直接加上这一值即可
System.out.println(sum);
}
static int transform(char ch) { //对字符的转换为数字的方法
switch(ch) {
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;
}
}
这一题在对罗马数据输入的方法使用了switch语句,在小数据的情况下,这种方式是高效的,若大数据情况,则情况不同。
粗略笔记,有错还请指正