这是我遇到麻烦的家庭作业。
我需要使用一种方法将整数转换为罗马数字。后来,我必须再用程序用罗马数字写出 1 到 3999,所以硬编码就没有了。我下面的代码非常简单;这是一个基本的 I/O 循环,可以在使用getIntegerFromUser
我们在课堂上制作的包时退出。
有没有办法将值分配给字符串,然后在我调用该方法时将它们加在一起?
更新:我从教授那里得到了一些伪代码来帮助我,虽然我明白他想说什么,但我在if
s. 我是否需要很多很多if
语句才能使我的转换器正确处理罗马数字格式,或者是否有一种方法可以更有效地执行此操作?我更新了我的代码以反映我的占位符方法。
更新(2012 年 10 月 28 日):我让它工作了。这是我最终使用的:
public static String IntegerToRomanNumeral(int input) {
if (input < 1 || input > 3999)
return "Invalid Roman Number Value";
String s = "";
while (input >= 1000) {
s += "M";
input -= 1000; }
while (input >= 900) {
s += "CM";
input -= 900;
}
while (input >= 500) {
s += "D";
input -= 500;
}
while (input >= 400) {
s += "CD";
input -= 400;
}
while (input >= 100) {
s += "C";
input -= 100;
}
while (input >= 90) {
s += "XC";
input -= 90;
}
while (input >= 50) {
s += "L";
input -= 50;
}
while (input >= 40) {
s += "XL";
input -= 40;
}
while (input >= 10) {
s += "X";
input -= 10;
}
while (input >= 9) {
s += "IX";
input -= 9;
}
while (input >= 5) {
s += "V";
input -= 5;
}
while (input >= 4) {
s += "IV";
input -= 4;
}
while (input >= 1) {
s += "I";
input -= 1;
}
return s;
}