Ruby: проблема с добавлением переменных - PullRequest
0 голосов
/ 31 марта 2011

Я делаю простую Ruby-программу для добавления букв полного имени человека, но я не знаю, как добавить переменные в код.

puts "What's your first name?"
first = gets.chomp
puts "What's your middle name?"
middle = gets.chomp
puts "What's your last name?"
last = gets.chomp

puts "You have " + first.length.to_s + middle.length.to_s + last.length.to_s + " letters in your name."

Если я напишу имя типа «Джон Джейкоб Смит», я получу «У вас 455 букв на ваше имя» вместо «У вас 14 букв на ваше имя».

Ответы [ 4 ]

3 голосов
/ 31 марта 2011
puts "You have " + first.length.to_s + middle.length.to_s + last.length.to_s + " letters in your name."

first.length равно 4 (число), потому что "john" имеет 4 буквы.

first.length.to_s - «4» (строка), потому что вы превратили число в строку - слишком рано.

В остальной части вашего кода вы «добавляете» две другие строки, чтобы получить «455»

4 + 5 = 9        # what you want
"4" + "5" = "45" # what you got
2 голосов
/ 31 марта 2011

Попробуйте это: puts "You have " + (first.length + middle.length + last.length) + " letters in your name."

2 голосов
/ 31 марта 2011
puts "You have " + (first.size + middle.size + last.size).to_s + " letters in your name."
# or
puts "You have #{first.size + middle.size + last.size} letters in your name."

или чуть больше "Рубиши"

puts "You have " + [first, middle, last].inject(0){|s,w| s+=w.size}.to_s + " letters in your name."
1 голос
/ 31 марта 2011

Это потому, что вы сами добавляете фактические строковые представления вместо чиселПроверьте ответ @ fl00r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...