LoginSignup
6
6

More than 5 years have passed since last update.

覚えとけ!Rubyで順番は死ぬほど大事だぞ!

Last updated at Posted at 2015-08-10

さてこのコード、当っていそうで何かが間違っています。それはなんでしょうか?

def fizz_buzz
  num = 0
  while (num <= 100) do
    num = num + 1
    if (num % 3 == 0) && (num % 5 == 0)
      puts "FizzBuzz"
    elsif (num % 3) == 0
      puts "Fizz"
    elsif (num % 5) == 0
      puts "Buzz"
    else
      puts num
    end

  end
end

正解はここ!numの位置です!

def fizz_buzz
  num = 0
  while (num < 100) do
    num = num + 1
    if (num % 3 == 0) && (num % 5 == 0)

ココの何が間違っているでしょうか?
では、実際に最初のコードを追ってみてください。すると・・・

あれ??なんかずれてるぞ??

ということに気づくはずです。
せっかくnumの値を0と定義しているのに、while文のすぐそばでnum = num + 1とやってしまったら、if文の中が0ではなく1で実行されちゃうんですねー、これが間違いの正解です。
ですので正しくはこうなります。

def fizz_buzz
  num = 0
  while (num <= 100) do
    if (num % 3 == 0) && (num % 5 == 0)
      puts "FizzBuzz"
    elsif (num % 3) == 0
      puts "Fizz"
    elsif (num % 5) == 0
      puts "Buzz"
    else
      puts num
    end

    num = num + 1

  end
end

いやー、ほんのちょっと順番を間違えるだけですごいエラーになっちゃうんですね〜

いいか!順番は死ぬほど大事だぞ!

~おわり

6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6