2016-07-22 8 views
0

I持っていたシンプルなRubyのトレーニングプログラムの一環として、以下:Ruby `to_i!`メソッドが動作しません。疑問に思うなぜ

user_num = gets.chomp 
user_num.to_i! 

が正常に動作します:

user_num = Integer(gets.chomp) 

が正常に動作します

がエラーを返します。

user_num = gets.chomp.to_i 

が正常に動作します:最初のインスタンスはエラーが、他の3つの作業罰金を返す理由について

print "Integer please: " 
#code insert location 

if user_num < 0 
    puts "You picked a negative integer!" 
elsif user_num > 0 
    puts "You picked a positive integer!" 
else 
    puts "You picked zero!" 
end 

任意のアイデア:

user_numX = gets.chomp 
user_num = user_numX.to_i 

ここでプログラムはありますか?最初はうまくいくはずです。それは私を悩ませている。ありがとう。

+4

'user_num.to_i!'は単に "エラーを返す"だけではなく、特定の例外とエラーメッセージを出します: 'NoMethodError:未定義メソッド' to_i! ' "2":String'( '' 2 "'が入力されていた場合)これは問題が何であるかを正確に伝えます。クラス 'String'にはインスタンスメソッド' to_i! 'はありません。エラーメッセージに注意深く注意を払い、その質問に言及するときは、例外が発生した行を含め、メッセージのすべての関連部分を含めます。 –

答えて

2

Ruby Docによると、メソッドString#to_i!存在しないので、なぜ私が想定しているものがNoMethodErrorであるのかを説明する必要があります。

関連する問題