16

「Fixnum を String (TypeError) に変換できません」というエラーが発生しました。これは単純なように見えますが、回避方法がわかりません。入力された文字列変数を整数に変換してから基本的な操作を実行するという私のロジックは正しいと思いましたが、どうやらいくつかの重要な情報が欠けているようです。

puts 'What is your favourite number?'
favenum = gets.chomp
better = favenum.to_i + 1
puts 'Yeah '+favenum+' is nice enough but '+better+' is bigger and better by far! Think on.'    

答えを探してみましたが、同じエラーの例は、現在の私の初歩的なルビーのスキルをはるかに超えています。

4

3 に答える 3

49

Rubyは(他のいくつかの言語とは異なり)メソッドのオペランドである場合、オブジェクトを文字列にキャストしませんString#+。手動で文字列にキャストします。

puts 'Yeah ' + favenum.to_s + ' is nice enough but ' + better.to_s + ' is bigger and better by far!'

または文字列補間を使用します(二重引用符に注意してください):

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far!"
于 2013-02-15T13:18:51.053 に答える
5

次のように、文字列補間を使用してみてください。

puts "Yeah #{favenum} is nice enough but #{better} is bigger and better by far! Think on."
于 2013-02-15T13:19:43.723 に答える
2

フォローしているチュートリアルに基づいて

puts 'Please enter your favourite number: '
number = gets.chomp
imp = number.to_i + 1
puts 'I\'d say '.to_s + imp.to_s + ' is a much better number.'

初心者レベルで「正しい」結果を生成します。

于 2013-09-17T08:26:08.377 に答える