Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
分析:将一个数字转化为罗马字符串表示。
大数左边加上小数就是把大数减去这个小数."M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"分别对应1000,900,500,400,100,90,50,40,10,9,5,4,1。以最左边为最大的字符为原则,从大到小判断num的值。
/** * 将一个数字转化为罗马字符串表示。 * 大数左边加上小数就是把大数减去这个小数.I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。 * 以最左边为最大的字符为原则,从大到小判断num的值。 */ public String intToRoman(int num) { StringBuffer sb = new StringBuffer(); String symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int value[]= {1000,900,500,400,100,90,50,40,10,9,5,4,1}; int i=0; while(num!=0){ while(num>=value[i]){/*先从罗马数字可以表示的最大值开始依次往后换算*/ sb.append(symbol[i]); num=num-value[i]; } i++; } return new String(sb); }