1

私はプログラミングが初めてで、この基本的な質問に答えようとしています。

人の好きな番号を尋ねるプログラムを書きなさい。プログラムで数値に 1 を追加し、その結果をより大きく、より適切な数値として提案します。

これは私がしなければならないことですが、数値に変換されません。

    puts "What is your favorite number?"
    number = gets.chomp
    number = number.to_i + 1
    puts "I suggest " + number + " as a bigger and better number"
4

3 に答える 3

11

表示されるエラーを詳しく見てください。

What is your favorite number?
42
number.rb:4:in `+': can't convert Fixnum into String (TypeError)
    from number.rb:4:in `<main>'

4 行目は次のとおりです。

puts "I suggest " + number + " as a bigger and better number"

問題は、Ruby が暗黙的にnumber文字列に変換しないことです (たとえば"foo" + 42、Ruby では有効ではありません)。いくつかの解決策があります。

  1. to_s連結する前に、それを文字列にnumber変換するために呼び出します。

    puts "I suggest " + number.to_s + " as a bigger and better number"
    
  2. Ruby 文字列補間を使用します。

    puts "I suggest #{number} as a bigger and better number"
    

オプション 2 はより慣用的です。それを使用することをお勧めします。

于 2013-03-02T02:45:52.287 に答える
2

あなたはこのようにそれを行うことができます:

print 'What is your favorite number? '
number = gets.chomp
puts "I suggest #{number.to_i + 1} as a bigger and better number"

コードについて説明することはあまりありませんが、考慮すべきことがいくつかあります。

  1. プレーンテキストをレンダリングする場合は、'text'の代わりに使用して"text"ください。「二重引用符で囲まれた場合、Rubyはより多くの作業を行います。最初に、置換(バックスラッシュ文字で始まるシーケンス)を探し、それらをバイナリ値に置き換えます」-プログラミングruby 1.9.3
  2. 常にコードの行数を減らすようにしてください。

ここでは、このことは実際には重要ではありませんが、大きなプログラムやWebページなどをコーディングする場合は、実際に違いが生じます。

于 2013-03-02T03:55:17.160 に答える