一起添加多个.length调用

时间:2012-06-21 21:59:01

标签: ruby string integer

我正在使用Learn to Program一书,该书教授新手如何从Ruby开始编程。那个人试着创建一个程序,询问我的个人姓名(第一个中间和最后一个),然后使用length加在一起,得到我名字中有多少个字符的总和。我没有搞砸到这一点:

puts 'enter your first name'
first = gets.chomp
puts 'first name is ' + first + '.'
puts 'enter your middle name.'
middle = gets.chomp
puts 'middle name is ' + middle + '.'
puts 'enter your last name.'
last = gets.chomp
puts 'last name is ' + last + '.'
puts 'Full name is ' + first + ' ' + middle + ' ' + last + '.'

所以我尝试了一些诸如

之类的东西
puts 'there are ' + first.length + middle.length + last.length.to_s + 'characters in your name!'

似乎没什么用。

2 个答案:

答案 0 :(得分:2)

尝试使用双引号字符串,让ruby使用#{}表示法为您评估代码

puts "there are #{first.length + middle.length + last.length} characters in your name!"

对评论作出回应的最新消息

真的很简单。在ruby中,单引号字符串被视为只是文本,无论你放入什么内容,而双引号字符串由Ruby解释器解析。因此,如果您使用带有#{}表示法的双引号字符串,那么大括号内的所有内容都将被视为ruby代码。

要使您的原始方式有效,请尝试将这些值一起添加并将它们分配给另一个变量,然后输出该变量

e.g。

total_length = first.length + middle.length + last.length
puts 'there are ' + total_length.to_s + ' characters in your name!"

你的方法的问题在于你将三个值加在一起,但是3值上有一个to_s,所以ruby会混淆最后一个数字是支持字符串还是数字而前两个添加不是字符串,因此不应包含在puts语句中。

希望有意义

答案 1 :(得分:0)

你关闭了!

puts 'there are ' + (first.length + middle.length + last.length).to_s + 'characters in your name!'

您正在将last.length转换为字符串,然后尝试将其添加到整数,这不会起作用。括号告诉Ruby进行数学运算,然后将结果转换为字符串。