0

我无法让该程序正确响应用户输入。无论用户输入什么,各种循环技术要么只运行一次块,要么无限运行块(我也尝试过casewhile。这是我尝试过的最新方法:

work_summary = []
begin
  # code that runs a sprint and adds results to the work_summary array
  puts "Would you like to add a sprint, Y/N?"
  sprint = gets.to_s
end until sprint == "N"
print work_summary, "\n"

Ruby 从不反对我使用各种方法的语法,但它也永远不会起作用。

4

3 回答 3

5

你需要

sprint = gets.chomp

获取返回带有尾随“\n”的字符串。

于 2012-09-28T02:33:59.937 回答
3

http://web.njit.edu/all_topics/Prog_Lang_Docs/html/ruby/syntax.html#begin

Begin 通常用于异常处理。我想你正在寻找一个while循环。

这是一个示例 work_summary = []

while true
  puts "Would you like to add a sprint?"
  sprint = gets.chomp
  if sprint == "N"
    break
  elsif sprint == "Y"
    puts "What's your time?"
    time = gets.chomp
    work_summary << time
  else
    puts "I didn't understand your request. Enter Y or N"
  end
end
于 2012-09-28T02:33:56.433 回答
2

我在这里找到了两种适合你的可能性

第一个是

while true
  puts "Would you like to add a sprint?"
  sprint = gets.chomp
  if sprint == "N"
    break
  elsif sprint == "Y"
    puts "What's your time?"
    time = gets.chomp
    work_summary << time
  else
    puts "Wrong request. Enter Y or N"
  end
end

这里 Lopp 会一直运行到 break 不会被执行

第二件事,您可以在代码中修改 1 行,即

sprint = gets.chomp

这将提取由gets生成的字符串的最后一个特殊字符,并在您的情况下正常工作

于 2012-09-28T06:25:43.107 回答