我是一名正在尝试学习 Ruby 的初学者。到目前为止,我已经学到了一些比较简单的东西,但我似乎一直在尝试将我学到的一些东西结合起来。
我想做的是问用户一个问题并告诉他们输入 1 或 2。一个简单的 if 语句可以让我在他们输入 1 时用一个选项响应,在他们输入 2 时用另一个选项响应。但是,如果他们输入完全不同的内容,例如不同的数字、字符串等,我该如何提示他们重试并让它循环回到原始问题?
到目前为止,我所拥有的看起来像这样。
prompt = "> "
puts "Question asking for 1 or 2."
print prompt
user_input = gets.chomp.to_i
if user_input == 1
puts "One response."
elsif user_input == 2
puts "Second response."
else
puts "Please enter a 1 or a 2."
end
这就是我卡住的地方。我如何让它回到“要求 1 或 2 的问题”。直到用户输入 1 或 2?我知道这可能是某种循环,但我似乎无法弄清楚要使用哪种循环以及如何将重复请求用户输入(如有必要)纳入其中,直到获得所需的输入。任何帮助将不胜感激。谢谢。
最佳答案
你说得对,你需要循环运行你的代码。使用以 gets.chomp
作为条件的 while
循环,您可以继续询问用户输入,直到您决定获得所需内容。
在这种情况下,您想验证问题的答案并再次询问它是否无效。您不需要做太多更改,除非确保在答案正确时跳出循环。如果答案错误,则再次打印提示。
这是一个稍微重构的版本,它使用 case
代替,但它显示了您需要做什么。毫无疑问,这是一种更简洁的方法...
prompt = "> "
puts "Question asking for 1 or 2."
print prompt
while user_input = gets.chomp # loop while getting user input
case user_input
when "1"
puts "First response"
break # make sure to break so you don't ask again
when "2"
puts "Second response"
break # and again
else
puts "Please select either 1 or 2"
print prompt # print the prompt, so the user knows to re-enter input
end
end
关于ruby - 如何循环请求用户输入,直到用户输入正确的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387173/