为了简化,把所有的可能为负的元素看成一个整体。比如90, 40这些直接看成一个整体。担心会出现XIII这种情况,所以设置了一个times来看到底出现了几次。
public String intToRoman(int num) {
int[] numbers = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] symbols ={"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
String roman = "";
int i = 0;
while(num>0){
int times = num/numbers[i];
num -= times * numbers[i];
while (times>0){
roman += symbols[i];
times--;
}
i++;
}
return roman;
}
No comments:
Post a Comment