2013-10-23 56 views
0

我學習Ruby 我想創建一個簡單的腳本,將一個給定的數字爲羅馬數字(舊風格的羅馬數字)不能把字符串轉換成整數(類型錯誤)

我無法理解轉換爲什麼我得到了「不能把字符串轉換成整數(類型錯誤)」

def convert_to_roman number 
    romans_array = [[1000,'M'],[500,'D'],[100,'C'],[50,'L'],[10,'X'],[5,'V'][1,'I']] 
    converted_array = [] 

    romans_array.each do |rom_num| 
    num = rom_num[0] 
    letter = rom_num[1] 

    if number > num 
     times = number/num 
     roman_letter = letter*times 
     converted_array.push(roman_letter) 
     number = number % num 
    end 
    end 
    converted_array.join() 
end 

number = '' 
puts 'please write a number and I will convert it to old style Roman numerals :)' 
puts 'p.s. to exit this program simply hit enter on an empty line, or type 0 and enter :)' 

while number != 0 
    number = gets.chomp.to_i 
    puts convert_to_roman number 
end 

我的代碼是: https://github.com/stefanonyn/ruby-excercises/blob/master/roman_numerals.rb

你會看到,在文件的結尾註釋掉有一個老的修訂代碼,它實際上工作但有很多重複。

如果有人能澄清我爲什麼會得到上述錯誤,我將不勝感激。 請不要爲我寫代碼,我正在努力學習Ruby,我將不勝感激只是在轉移到下一步的一些支持。

非常感謝!

回答

2

你是你的陣列

romans_array = [[1000,'M'],[500,'D'],[100,'C'],[50,'L'],[10,'X'],[5,'V'][1,'I']] 
                     ^here 

這個錯誤絕對不是所有的幫助,但它出現的原因是,在解釋它看起來像你試圖訪問一個範圍內缺少一個逗號最後一個元素[5,'V']數組中的索引。然而,提供的索引從1到'I'當然沒有意義。如果它已被寫入[5,'V'][1,1],則數組的最後一個元素將爲['V'],這可能更難以調試!

+0

哦哇,謝謝! :) – superuseroi

相關問題