Ruby fixnum错误

时间:2013-11-18 16:11:59

标签: ruby

请帮我解决这个计算代码:

puts 'What is your first name?'
firstName = gets.chomp

puts 'What is your middlename?'
middleName = gets.chomp

puts 'What is your last name?'
lastName = gets.chomp

puts ' the number of characters in your name is ' + firstName.length + middleName.length + lastName.length

我收到此错误:

methods.rb:20:in `+': no implicit conversion of Fixnum into String (TypeError)
from methods.rb:20:in `<main>'

我尝试在to_ifirstNamemiddleName上使用lastName方法,但它仍会抛出相同的错误,因此我认为错误来自最初puts。但我可能错了。

2 个答案:

答案 0 :(得分:4)

您正在尝试添加FixNum和String。这是不可能的.Ruby不会自动将Fixnums转换为字符串。

您需要做的是将FixNum转换为字符串。 这是一种可以编写上述代码的方法,以便它能够正常工作。

puts ' the number of characters in your name is ' + (firstName.length + middleName.length + lastName.length).to_s

或使用自动调用to_s方法的插值。

puts " the number of characters in your name is #{firstName.length + middleName.length + lastName.length}"

答案 1 :(得分:1)

这是因为firstName.length会返回Integer,而您无法将Integer添加到String

您可以将其转换为String

firstName.length.to_s