1

私は始めました:

    puts "Hello there, and what's your favorite number?"
    favnum = gets.to_i
    puts "Your favorite number is #{favnum}?" " A better favorite number is #{favnum + 1}!"
    puts "Now, what's your favorite number greater than 10?"
    favnumOverTen = gets.to_i
    if favnumOverTen < 10
        puts "Hey! I said GREATER than 10! Try again buddy."
    else
        puts "Your favorite number great than 10 is #{favnumOverTen}?"
        puts "A bigger and better number over 10 is #{favnumOverTen * 10}!"
puts "It's literally 10 times better!"
    end

これは問題なく機能しましたが、ユーザーが10未満の数字を入力すると、プログラムは終了しました。10より大きい数値を入力するまで、ユーザーに再試行を求めるプロンプトを表示したいのですが、ループでそれを行うことになっていますか?

これが私がスイングしたものですが、明らかにそれは間違っています:

    puts "Hello there, and what's your favorite number?"
    favnum = gets.to_i
    puts "Your favorite number is #{favnum}?" " A better favorite number is #{favnum + 1}!"
    puts "Now, what's your favorite number greater than 10?"
    favnumOverTen = gets.to_i
    if favnumOverTen < 10
    loop.do
        puts "Hey! I said GREATER than 10! Try again buddy."
        favnumOverTen = gets.to_i
    until favnumOverTen > 10
    else
        puts "Your favorite number great than 10 is #{favnumOverTen}?"
        puts "A bigger and better number over 10 is #{favnumOverTen * 10}!"
puts "It's literally 10 times better!"
    end
4

2 に答える 2

4

これが前の2つより少し短い方法です:

puts "Now, what's your favorite number greater than 10?"
until (favnumOverTen = gets.to_i) > 10
  puts "Hey! I said GREATER than 10! try again buddy."
end

これは、割り当てが変数に割り当てられた値を返すために機能します。

于 2012-04-04T00:06:08.213 に答える
1

より良い解決策は、お気に入りの10の数を一度取得してから、次のようにuntilループチェックを開始することです。favnumOverTen > 10

puts "What is your favorite number greater than 10?"
favnumOverTen = gets.to_i
until favnumOverTen > 10 do
  puts "Hey! I said GREATER than 10! Try again buddy."
  favnumOverTen = gets.to_i
end

このように、最初のエントリが10より大きい場合、untilループは実行されません(ifステートメントが保存されます)。

また、ご存知のとおり、キャメルケースを使用して変数名を記述することは慣用的なRubyとは見なされません(つまり、そうfavnumOverTenする必要がありますfavnum_over_ten)。

于 2012-04-03T23:57:03.083 に答える