2

我正在使用 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!'

似乎没有任何效果。

4

2 回答 2

2

尝试使用双引号字符串并让 ruby​​ 使用 #{} 符号为您评估代码

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

更新回应评论

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

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

例如

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

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

希望这是有道理的

于 2012-06-21T22:13:56.943 回答
0

你很近!

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

您将 last.length 转换为字符串,然后尝试将其添加到整数,但这是行不通的。括号告诉 Ruby 进行数学运算,然后将结果转换为字符串。

于 2012-06-21T22:18:44.427 回答