Ruby:添加变量时出现问题

时间:2011-03-31 19:32:52

标签: ruby

我正在制作一个简单的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."

如果我输入“John Jacob Smith”之类的名字,我会收到“你的名字中有 455 字母”,而不是“你的名字中有 14 字母”

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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."

或更多“Rubyish”

puts "You have " + [first, middle, last].inject(0){|s,w| s+=w.size}.to_s + " letters in your name."

答案 2 :(得分:2)

试试这个:puts "You have " + (first.length + middle.length + last.length) + " letters in your name."

答案 3 :(得分:1)

那是因为你要添加数字的实际字符串表示而不是数字。检查@ fl00r的答案

相关问题