7

我目前正在学习 ruby​​,但我遇到了这个问题:

编写聋奶奶程序。无论您对奶奶说什么(无论您输入什么),她都应该回应 HUH?!SPEAK UP, SONNY!,除非你大声喊出来(输入所有大写字母)。如果你大喊大叫,她会听到你的声音并回喊,不,不是自 1938 年以来!为了让你的节目真正可信,让奶奶每次都喊出不同的年份;可能是 1930 年到 1950 年之间的任意一年。在你喊 BYE 之前,你不能停止和奶奶说话。

这是我试过的代码:

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 回答