Ruby无尽循环



我是Ruby新手。我已经写了下面的代码,它的工作大约90%,除了else语句。else语句触发无限循环。我只是想让它要求用户再试一次。这是我的代码

puts "Do you want to print something? (Y / N)"
user = gets.chomp.downcase
answer = true
while answer
if user == "y"
puts "Something"
answer = false
elsif user == "n"
puts " "
answer = false
else
puts "Invalid input! Please enter Y or N"
end
end 

稍短一些(注意user已经没有了,答案现在被称为answer)

answer = ""
until (answer  == "y") or (answer == "n")
puts 'Do you want to print something? (Y/N)'
answer = gets.chomp.downcase 
end 

一旦退出else,answer仍然为真。如果你想重新提示,你可以把你的put和user语句移到循环中。

这样应该可以工作。

while true # (alternately) loop do
puts 'Do you want to print something? (Y/N)'
case gets.chomp.downcase
when 'y'
puts 'foo'
break
when 'n'
puts 'bar'
break
else
puts 'Invalid input! Please enter Y or N'
end
end

您可以使用break退出循环,而不是设置另一个变量。此外,这看起来像是case语句列出一些显式用例的好用例。

最新更新