2015-09-26 12 views
-5

/Users/danielwheeler/Desktop/Screen Shot 2015-09-26 в 13.18.16.pngрубин код не работает

Я пытаюсь сделать метод, который принимает число в качестве входных данных AN новообращенные это в строку. Не уверен, что случилось.

Сообщение об ошибке от возвышенного:

/Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:30:in `block in english_number': no implicit conversion of nil into String (TypeError) 
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `each' 
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `each_with_index' 
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:23:in `english_number' 
    from /Users/danielwheeler/Desktop/code/projects/learn_to_program/ch10-nothing-new/english_number.rb:44:in `<main>' 
[Finished in 0.1s with exit code 1] 
+0

https://github.com/d9nny/learn_to_program/commit/1e122c5e093979f5318366fd1ce86ea9a7b55f24 – d9nny

+1

В чем вопрос? – sawa

+1

Где ваш код? – moeabdol

ответ

1

Я проверил свои коды и нашел некоторые проблемы:

num_array.reverse.each_with_index { |value , index| 
    if index % 3 == 0 && num_array[index] != 0 
     num_string = num_string << ones_place[value-1] 
    elsif index % 3 == 0 && value > 0 && num_array[index] != 0 
     num_string = num_string << other_place[index/3] << ones_place[value-1] 
    elsif index % 3 == 1 
     num_string = num_string << tens_place[value-1] 
    elsif index & 3 == 2 
     num_string = num_string << other_place[0] << ones_place[value-1] 
    end 
    } 

ones_place[value-1] возможно ноль, вы пытаетесь добавить ноль в строку, так TypeError поднял. если ones_place[value-1] ничтожно, вы должны изменить его на строку, просто нужно использовать метод to_s или использовать +, чтобы добавить строки вместе.

"" << nil 
TypeError: no implicit conversion of nil into String 

"" << nil.to_s 
=> "" 

я изменить код, как показано ниже, скрипт не может работу, обнаружили никаких ошибок, но я не знаю, что результат является правильным или нет, вы должны проверить это самостоятельно.

num_array.reverse.each_with_index { |value , index| 
    puts "#{value} and #{index}" 
    if index % 3 == 0 && num_array[index] != 0 
     num_string = num_string + ones_place[index-1] 
    elsif index % 3 == 0 && value > 0 && num_array[index] != 0 
     num_string = num_string + other_place[index/3] + ones_place[index-1] 
    elsif index % 3 == 1 
     num_string = num_string + tens_place[index-1] 
    elsif index & 3 == 2 
     num_string = num_string + other_place[0] + ones_place[index-1] 
    end 
    } 

Я предлагаю вам добавить код отладки в свой скрипт, он может помочь вам найти проблемы как можно скорее.

Смежные вопросы