7

私は現在ルビーを学んでいますが、この問題に行き詰まっています:

聴覚障害者のおばあちゃんプログラムを書きます。おばあちゃんに何を言っても(何を入力しても)、彼女はHUH ?!と答えるはずです。SPEAK UP, SONNY! と叫ぶ場合を除きます (すべて大文字で入力してください)。あなたが叫ぶと、彼女はあなたの声を聞くことができ、叫び返します.NO、NOT SINCE 1938! あなたのプログラムを本当に信じられるものにするために、おばあちゃんに毎回違う年を叫ばせてください。たぶん、1930 年から 1950 年の間の任意の年です。「さようなら」と叫ぶまで、おばあちゃんとの会話を止めることはできません。

これは私が試したコードです:

puts "Say something to Grandma!"
something = gets.chomp
while something != "BYE"
    if something == something.upcase
      puts "NO, NOT SINCE 19" + (rand(30..50)).to_s + "!"
    else
      puts "HUH? SPEAK UP SONNY!"
    end
end

これを実行すると、if と else の文字列が無限ループに陥ります。ここで何が間違っていますか?

4

1 に答える 1

7

入力を取得するのは一度だけです。次のように、各ループの開始時にそれを読み取る必要があります。

something=""
while something != "BYE"
    puts "Say something to Grandma!"
    something = gets.chomp
    if something == something.upcase
      puts "NO, NOT SINCE 19" + (rand(30..50)).to_s + "!"
    else
      puts "HUH? SPEAK UP SONNY!"
    end
end

それが理にかなっていることを願っています。

于 2012-11-07T23:02:52.833 に答える