現在していること
FizzBuzzの応用問題を解いています。
やりたいことはコード内の「#」に記載しています。
現在、このようなコードでおこなっています。
def fizz_buzz?(str) str =~ /\A\s*[+\-]?[0-9]+\s*\z/ end puts "数字を入力してください" str = gets if fizz_buzz?(str) fizz_buzz = str.to_i begin #指定した文字の出力 if fizz_buzz == 3 puts fizz_buzz #0以下の数字 elsif fizz_buzz <= 0 puts "0以下です" #数字以外の文字列 elsif fizz_buzz != str.to_i puts "数字以外の文字列です" #全角数字 #else #puts "数字が全角入力です" end rescue InputError puts 'エラー!! 数字の読み込みに失敗しました。' end end
ききたいこと
0以下の数字までは正常に動きます。
数字以外の文字列と、全角数字をelsifで判別したいのですが、どのように指定すればよいでしょうか。
正規表現の指定などもやってみましたが、うまくいきませんでした
※今コードに入っているstr.to_iは無視してください。
追記
上記のコードは、以前別ファイルでFizzBuzzの基本問題を解いたコードを参考にしています。
def number?(str) str =~ /\A\s*[+\-]?[0-9]+\s*\z/ end loop{ puts "Please type numbers in half size." str = gets if number?(str) number = str.to_i if number == 0 puts "エラー。0以上の文字を入力してください" break elsif number % 3 == 0 && number % 5 == 0 puts "FizzBuzz" break elsif number % 5 == 0 puts "Buzz" elsif number % 3 == 0 puts "Fizz" elsif number puts number end else puts "エラー。半角数字を入力してください" break end }