Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:分别计算每一位上的数字的表示形式,最后连接字符串
public String intToRoman(int num) {
int a = num%10;
String s1 = "";
switch(a) {
case 1 : s1 = "I"; break;
case 2 : s1 = "II"; break;
case 3 : s1 = "III";break;
case 4 : s1 = "IV"; break;
case 5 : s1 = "V"; break;
case 6 : s1 = "VI"; break;
case 7 : s1 = "VII"; break;
case 8 : s1 = "VIII"; break;
case 9 : s1 = "IX"; break;
case 0 : break;
}
if(num/10 == 0) return s1;
else {
String s2 = "";
int b = (num/10)%10;
switch(b) {
case 1 : s2 = "X"; break;
case 2 : s2 = "XX"; break;
case 3 : s2 = "XXX";break;
case 4 : s2 = "XL"; break;
case 5 : s2 = "L"; break;
case 6 : s2 = "LX"; break;
case 7 : s2 = "LXX"; break;
case 8 : s2 = "LXXX"; break;
case 9 : s2 = "XC"; break;
case 0 : break;
}
if(num/100 == 0) return s2+s1;
else {
String s3 = "";
int c = (num/100)%10;
switch(c) {
case 1 : s3 = "C"; break;
case 2 : s3 = "CC";break;
case 3 : s3 = "CCC"; break;
case 4 : s3 = "CD"; break;
case 5 : s3 = "D"; break;
case 6 : s3 = "DC"; break;
case 7 : s3 = "DCC"; break;
case 8 : s3 = "DCCC"; break;
case 9 : s3 = "CM"; break;
case 0 : break;
}
if(num/1000 == 0) return s3+s2+s1;
else {
String s4 = "";
int d = (num/1000)%10;
switch(d) {
case 1 : s4 = "M"; break;
case 2 : s4 = "MM";break;
case 3 : s4 = "MMM"; break;
}
return s4+s3+s2+s1;
}
}
}
}