我目前正在学习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字符串就会进入无限循环。我在这里做错了什么?
答案 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
希望这是有道理的。