0

このプログラムをユーザー入力に正しく応答させることができません。さまざまなループ手法では、ユーザーが何を入力しても、ブロックを1回だけ実行するか、ブロックを無限に実行します(私も試しまし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

getは、末尾に「\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

ここであなたに適した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 に答える