Ruby Infinite Loop

时间:2012-11-07 22:58:34

标签: ruby

我目前正在学习ruby,而且我已经遇到了这个问题:

写一个聋奶奶计划。无论你对奶奶说什么(无论你输入什么),她都应该回答HUH?!说起来,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字符串就会进入无限循环。我在这里做错了什么?

1 个答案:

答案 0 :(得分: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

希望这是有道理的。