Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
给定一个整数,把它转换成罗马数字。
输入可以保证在1到3999之间。
下图是转换规则。
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
| I |
II |
III |
IV |
V |
VI |
VII |
VIII |
IX |
| |
|
|
|
|
|
|
|
|
| 10 |
20 |
30 |
40 |
50 |
60 |
70 |
80 |
90 |
| X |
XX |
XXX |
XL |
L |
LX |
LXX |
LXXX |
XC |
| |
|
|
|
|
|
|
|
|
| 100 |
200 |
300 |
400 |
500 |
600 |
700 |
800 |
900 |
| C |
CC |
CCC |
CD |
D |
DC |
DCC |
DCCC |
CM |
下面的程序用的是穷举,即把上面的表格用if else 写了一遍。当然这课表也是有规律的,如1-3开头的是重复,4-5截取后一个字符,6-8又是依次添一个尾字符。
public static String intToRoman(int num) {
StringBuffer buf = new StringBuffer();
int dddd = num / 1000;
int ddd = num % 1000 / 100;
int dd = num % 1000 % 100 / 10;
int d = num % 1000 % 100 % 10;
for(int i=0;i
整数和罗马数字的转换规则见此 http://www.mathsisfun.com/roman-numerals.
html 。