Ich erstelle eine Methode, die römische Zahlen in Ganzzahlen konvertiert. Ich habe dies geschrieben:Methode zum Konvertieren von römischen Zahlen in Arabisch druckt nicht die Antwort
def roman_to_integer(roman)
roman = roman.upcase
num_I = roman.count("I").to_i
num_V = roman.count("V").to_i
num_X = roman.count("X").to_i
num_L = roman.count("L").to_i
num_C = roman.count("C").to_i
num_D = roman.count("D").to_i
num_M = roman.count("M").to_i
rom_num = { "I" => 1,
"V" => 5,
"X" => 10,
"L" => 50,
"C" => 100,
"D" => 500,
"M" => 1000 }
while roman
if roman[0] == "M"
integer = num_M * rom_num["M"] + num_D * rom_num["D"] + num_C * rom_num["C"] + num_L * rom_num["L"] + num_X * rom_num["X"] + num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "D"
integer = num_D * rom_num["D"] + num_C * rom_num["C"] + num_L * rom_num["L"] + num_X * rom_num["X"] + num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "C"
integer = num_C * rom_num["C"] + num_L * rom_num["L"] + num_X * rom_num["X"] + num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "L"
integer = num_L * rom_num["L"] + num_X * rom_num["X"] + num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "X"
integer = num_X * rom_num["X"] + num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "V"
integer = num_V * rom_num["V"] + num_I * rom_num["I"]
elsif roman[0] == "I"
integer = num_I * rom_num["I"]
end
end
return integer
end
puts "Tell me any number in Roman System and I will convert it to the Arabic Number!"
number = gets.chomp
puts "Here is your number:"
puts(roman_to_integer(number))
Wenn es um die letzte Zeile kommt, wo es aus dem Ergebnis gedruckt werden soll, bekomme ich nur die leere Eingabezeile in der Befehlszeile. Ich verstehe nicht, warum es nicht funktioniert und brauche Hilfe, um herauszufinden, wo der Code falsch ist.
Auch wenn ich
puts number.roman_to_integer
als letzte Zeile verwenden, erhalte ich
private method "roman_to_integer" called on "":String (NoMethodError)
Jede Hilfe würde geschätzt.
Prost! Entfernen "während" hat funktioniert! In der Tat wird es für "IX" im Moment nicht funktionieren. Ohne zu sehr ins Detail zu gehen - die Aufgabe war, es mit dem * alten * römischen System arbeiten zu lassen, das Dinge wie VIIII = 9 akzeptierte. Wie auch immer - ich werde versuchen, es später zu verbessern, damit es mit dem "IX" und "XL" usw. –