前提・実現したいこと
FizzBuzz問題において、以下のことをおこないたいです。
3と5の倍数→FizzBuzz
3の倍数→Fizz
5の倍数→Buzz
その他の数字→入力した数字
数字以外→エラー
<条件>
・外部入力で任意の数字を入力する
・FizzBuzzがでるか、数字以外のエラーが出たらプログラムを終了する
発生している問題・エラーメッセージ
1.最初に数字以外の文字列を入力するとシステムエラー(?)になる
(意図したエラー表示(putsで入力したエラー表示)にならない)
2.エラーを出力したときのプログラムの終わらせ方がわからない
def number?(str) str =~ /\A\s*[+\-]?[0-9]+\s*\z/ end begin puts "数字を入力してね!" str = gets if number?(str) number = str.to_i if number % 3 == 0 && number % 5 == 0 puts "FizzBuzz" elsif number % 5 == 0 puts "Buzz" elsif number % 3 == 0 puts "Fizz" elsif number puts number end else puts "エラーです!もう一度数字を入力してね!" end end until number % 3 == 0 && number % 5 == 0 || false
試したこと
・最後の行でfalseをつけた理由→特定の数字(7や14)を入れるとなぜか入力した数字が戻ってこなくなったため
・ ||の大元の意味は「or」であると習いました。しかし、下のように、untilの代わりにwhile文と||を使って同じように入力するとエラーになります。これの理由も同時に教えていただきたいです。
end while number % 5 == 0 || number % 3 == 0 || number
rubyを初めてまだ1週間少しの初心者ですがご回答お願いします。
回答1件
あなたの回答
tips
プレビュー