2016-07-19 5 views
0

だから私は数字となるまでループで遊ぶためにコードのこの作品を書いた:Rubyは常にfalseとして検証されますか?

number = rand(10) 
puts number 

puts "Guess the number" 
guess = gets.chomp 


until guess == number 
    puts "Guess again!" 
    guess = gets.chomp 
end 

puts "You've guessed it right! The number is #{guess} 

しかし、それはそれは常にまでループ内で立ち往生し、私はなぜわからないいくつかの理由があります。私は乱数を入れて、正しいと思ってコードを試してみましょう。私はまったく新しいRubyだから、それは私が見逃している非常に明白なものだと思うが、私はそれを見ない。

私の見解からは、推測のプロンプトが表示されたときはいつも、untilループによってuntil guess == numberで検証されたと推測されます。

誰かがこの問題を解決するのに役立つのですか?

+3

数字を文字と比較しています。 'gets.chomp'を' gets.chomp.to_i'(または単に 'gets.to_i')に変更するか、' number = rand(10).to_s'に変更します。 –

答えて

2

理由は簡単です。つまり、ユーザー入力を整数にキャストできません。

すなわちIは

number = gets.chomp 

を書き、私は番号の1を入力すると、次にnumber変数は、ストリング"1"、ない整数1に等しくなります。

(ユーザ入力の文字列を返すする)だけではなく、guess = gets.chompguess = gets.chomp.to_i

+0

私はそれが非常に明白な何かであることを知っていました。たとえ文字列がnummeric値であれば、文字列はintと比較されません。それを考えなかった。どうも! – Kevinvhengst

+0

問題ありません。それがあなたの問題を解決したら答えを受け入れるのは慣例です。 –

+0

私は知っています。私はちょうど9分でそうすることができるでしょう:P – Kevinvhengst

1

を使用し、この問題を解決するには、(整数にユーザ入力を変換する)guess = gets.to_iを使用 to_i方法は、整数に要素を変換しますそれは整数の一部ではないので、/n文字を削除します。 .chompメソッドを追加する必要はありません。

関連する問題