编写Java函数来将数字转化为罗马数字表示
发布时间:2023-06-30 21:09:01
罗马数字是一种使用字母来表示数字的古老记数系统。下面是一个Java函数,用于将给定的数字转换为罗马数字表示:
public static String integerToRoman(int num) {
if(num <= 0 || num >= 4000) {
throw new IllegalArgumentException("输入的数字必须在1到3999之间。");
}
String[] romanSymbols = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
int[] integerValues = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
StringBuilder sb = new StringBuilder();
for(int i = 0; i < romanSymbols.length; i++) {
while(num >= integerValues[i]) {
sb.append(romanSymbols[i]);
num -= integerValues[i];
}
}
return sb.toString();
}
在这个函数中,我们首先进行输入的边界检查,确保输入的数字位于1到3999之间。然后,我们定义了一个数组,其中包含用于构建罗马数字的符号(例如"X","L"等)和整数值(例如10,50等)。我们使用StringBuilder来构建最终的罗马数字表示。
接下来,我们使用一个循环来迭代每个符号和整数值对。在每次迭代中,我们检查给定的数字是否大于等于当前整数值。如果是,我们将相应的符号添加到StringBuilder中,并从给定的数字中减去当前整数值。这样,我们就构建了该数字的罗马数字表示。
最后,我们将StringBuilder转换为String并将其返回。请注意,如果输入数字不在1到3999之间,我们将抛出一个IllegalArgumentException。这是因为罗马数字系统不支持表示大于3999的数字。
