这是一个我做不来的家庭作业。
我需要使用一个方法制作一个整数到罗马数字的转换器。之后,我必须用这个程序用罗马数字写出1到3999,所以不再需要硬编码。我下面的代码是非常基本的; 它是一个基本的 I/O 循环,在使用我们在课堂上为 getIntegerFromUser
制作的包时,它提供了一种退出的方法。
有没有一种方法可以将值赋给 String,然后在调用该方法时将它们相加?
更新: 我从我的教授那里得到了一些伪代码来帮助我,虽然我明白他想说什么,但是我在使用 if
时遇到了一些麻烦。我将需要许多,许多 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;
}