これは私が問題を抱えている宿題です。
メソッドを使用して、整数からローマ数字へのコンバーターを作成する必要があります。後で、プログラムを使用して1〜3999をローマ数字で書き出す必要があるため、ハードコーディングは行われません。以下の私のコードは非常に必要最低限のものです。getIntegerFromUser
これは、クラスで作成したパッケージを使用しているときに終了する方法を備えた基本的なI/Oループです。
文字列に値を割り当てて、メソッドを呼び出すときにそれらを合計する方法はありますか?
更新:教授から疑似コードを受け取って助けてもらいました。教授が何を言おうとしている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;
}