2015-07-26 9 views
0

Я сделал эту программу, которая насчитывает символы на ваше имя.добавление строковых чисел вместе ruby ​​

puts 'What is your first name?' 
forename = gets.chomp 
puts 'what is your middle name?' 
middlename = gets.chomp 
puts 'what is your surname?' 
surname = gets.chomp 
puts 'Did you know there are ' + forename.length.to_s + middlename.length.to_s + surname.length.to_s + ' characters in your name?' 

Однако это добавляет номера рядом друг с другом равной 555 вместо 15. я не могу преобразовать длины до целых чисел, как я не буду в состоянии перед тем, как добавить строку текста.

+1

'+' (добавить) на строку, которая связывает строки. Вы преобразовываете числа в строку перед добавлением (конкатенированием) их, вместо этого используйте строчную интерполяцию 'puts. Знаете ли вы, что есть # {forename.length + middlename.length + surname.length} символы в вашем имени?" ', Если вы хотите сделать это по-своему, тогда вы можете сделать «puts». Знаете ли вы, что на вашем имени есть «+ (forename.length + middlename.length + surname.length) .to_s + '?» – bjhaid

+0

Благодарим вас за это, вторая часть - то, что я искал. – drew

ответ

-1
puts 'What is your first name?' 
forename = gets.chomp 
puts 'what is your middle name?' 
middlename = gets.chomp 
puts 'what is your surname?' 
surname = gets.chomp 
name_length = [forename,middlename,surname].map(&:length).inject(:+) 
puts 'Did you know there are ' + name_length + ' characters in your name?' 

ИЛИ просто без #to_s. С #to_s вы преобразуете числа обратно в строку и конкатенируете строку.

puts 'What is your first name?' 
forename = gets.chomp 
puts 'what is your middle name?' 
middlename = gets.chomp 
puts 'what is your surname?' 
surname = gets.chomp 
puts 'Did you know there are ' + forename.length + middlename.length + surname.length + ' characters in your name?' 
+0

mike name_length = [forename, middlename, surname] .map (&: length) .inject (: +), который будет создавать массив, а затем отображать его, а затем конкат строки не обязательно, это лучшее решение для вашего второго (и как вы сказали просто) –