将罗马数字转换为整型数字:
- 基本思想:
1、先定义一个change方法,用于将罗马数字的每一个字符转换为对应的数字
2、将输入的罗马数字的字符串转化为字符数组对于得到的数组进行操作
3、检测数组当前数值是否大于下一个,小于就减去当前数值,不小于就加(注意数组下标的控制)
import java.util.Scanner;
public class test{
public static void main(String args[]){//主方法
Scanner scanner=new Scanner(System.in);
System.out.println("输入罗马数字");
String str=scanner.next();
System.out.println(romanToInt(str));
}
public static int romanToInt(String s) {//将罗马数字的字符串进行转化的方法
char[]chars=s.toCharArray();//定义一个字符数组
int w=0;
if(chars.length==1){//若字符数组长度为1时
w=w+change(chars[0]);
}else {
for(int i=0;i<chars.length-1;++i){
if(change(chars[i])<change(chars[i+1])){
w=w-change(chars[i]);//若当前字符对应数值小于下一个的,就减去当前数值
}else{
w=w+change(chars[i]);//若当前字符对应数值不小于下一个的,就累加
}
}
w=w+change(chars[chars.length-1]);//加上最后一个字符对应的数值
}
return w;
}
public static int change(char c){//用于将罗马字符转换为对应的数值
int number=0;
switch (c){
case 'I':{ number=1;break;}
case 'V':{number=5;break;}
case 'X':{number=10;break;}
case 'L':{number=50;break;}
case 'C':{number=100;break;}
case 'D':{number=500;break;}
case 'M':{number=1000;break;}
default:number=0;
}
return number;
}
}