请帮我解决这个计算代码:
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_i
,firstName
和middleName
上使用lastName
方法,但它仍会抛出相同的错误,因此我认为错误来自最初puts
。但我可能错了。
答案 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