ruby – 如何在用户输入正确的信息之前循环用户输入请求?

前端之家收集整理的这篇文章主要介绍了ruby – 如何在用户输入正确的信息之前循环用户输入请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是一个尝试学习 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循环作为条件,您可以继续询问用户输入,直到您确定自己拥有所需内容为止.

在这种情况下,您需要验证问题的答案并再次询问它是否无效.你不需要改变很多,除了确保你在答案是正确的时候突破循环.如果答案错误,请再次打印提示.

这是一个稍微重构的版本,它使用了大小写,但它显示了你需要做的事情.毫无疑问,这是一种更清洁的方式……

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相关文章