Roma sayılarını tam sayılara dönüştüren bir yöntem oluşturuyorum. Ben bu yazdım:Roman sayıları arapçaya dönüştürme yöntemi, yanıt yazmıyor
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))
o sonucu yazdırmalısınız son çizgi, söz konusu, sadece komut satırında boş giriş hattını olsun. Neden işe yaramadığını ve kodun nerede olduğunu bulmakta biraz yardıma ihtiyacım olduğunu anlamıyorum.
Ben son satır olarak
puts number.roman_to_integer
kullanmak Ayrıca, ben Herhangi bir yardım mutluluk duyacağız
private method "roman_to_integer" called on "":String (NoMethodError)
olsun.
Şerefe! 'while' kaldırarak çalıştı! Gerçekten, şu anda "IX" için çalışmayacak. Çok fazla ayrıntıya girmeden - görev, onu, VIIII. Gibi şeyleri kabul eden * eski * Roma Sistemi ile çalışmaktı. Her neyse - "IX" ile çalışmasını sağlamak için daha sonra geliştirmeye çalışacağım ve "XL", vb. –