Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中测试重复的get.chomp输入_Ruby_Control Flow - Fatal编程技术网

在Ruby中测试重复的get.chomp输入

在Ruby中测试重复的get.chomp输入,ruby,control-flow,Ruby,Control Flow,我在Ruby中工作,我试图测试用户的输入(变量kid)是否三次相同 我希望我的方法speak被无休止地调用,直到用户在被问到三个不同的问题时分别输入“BYE”三次 现在,如果用户只为一个问题输入“BYE”,终端和用户之间的整个对话就结束了 有没有办法让程序测试“再见”被说三次,并且只有一次说了三次,对话就结束了 kid = gets.chomp unless kid == "BYE" speak end 我不知道是有一个真正简单的解决方案,还是只有一个复杂的解决方案,但

我在Ruby中工作,我试图测试用户的输入(变量
kid
)是否三次相同

我希望我的方法
speak
被无休止地调用,直到用户在被问到三个不同的问题时分别输入“BYE”三次

现在,如果用户只为一个问题输入“BYE”,终端和用户之间的整个对话就结束了

有没有办法让程序测试“再见”被说三次,并且只有一次说了三次,对话就结束了

kid = gets.chomp    
unless kid == "BYE"  
    speak  
end

我不知道是有一个真正简单的解决方案,还是只有一个复杂的解决方案,但任何答案都会有所帮助。

我建议寻找一本关于“循环”和“控制流”的ruby教程

我想他们可能有你需要的东西

此示例也可能有帮助:

times = 0          # keep track of iterations
while times < 10   # repeatedly, while this condition is true
  puts "hello!"    # output "hello!"
  times += 1       # increase count of iterations
end
times=0#跟踪迭代
当次数反复小于10时,当此条件为真时
放入“你好!”#输出“你好!”
次数+=1#增加迭代次数
终止

您需要记录用户输入“再见”的次数。当该数字达到3时,您退出:

 byecount = 0
 while kid = gets.chomp
 case kid     
  when "BYE"
    #increase the count of bye  
    byecount +=1
    puts byecount
    break if byecount == 3
  else
    #reset our count
    byecount = 0
    speak
  end
end
非“再见”回答时,代码重置为0


我发现一个
case
语句在处理不同的用户输入时非常方便,尤其是与正则表达式结合时。

好吧,OP说对话结束,退出就结束:)但它是为了演示如何检查输入/保持状态。您可以将
退出
替换为
中断
,它将跳出while循环,从而结束对话。公平地说,更新的答案是使用中断退出while,而不是退出/世界停止。虽然了解循环和流控制很重要,但这并不能回答问题。你将如何将这一点应用到这个问题上?称之为试图引导他找到答案,而不仅仅是为他编写代码。这个问题所涉及的概念是在所有基本编程教程的开头介绍的,我觉得他能够找到一个并从中学习,而不是直接给他答案,这对他来说很重要。但这是一个答案网站。。。他们可以自己决定什么对他们来说是重要的。参见,其中解释了有时最好“不提供完整的代码示例”