問題
配列にある値の中から偶数の値をカウントして出力するメソッドを作りましょう。
出力例:
count_evens([2, 1, 2, 3, 4]) → 3
count_evens([2, 2, 0]) → 3
count_evens([1, 3, 5]) → 0
ヒント
even?というメソッドを使いましょう。
解答
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
puts count
end
end
end
模範解答
def count_evens(nums)
count = 0
nums.each do |num|
if num.even?
count += 1
end
end
puts count
end
解説
配列の中の偶数の数を出力するためにカウントした数を保持するための変数countを用意する。
countをeach文の中で定義するとcount = 0が繰り返し処理されてしまうのでeach文のループ外で定義する事。
even?メソッドとは
偶数であればtrue、そうでない場合はfalseを返します。
10.even? # => true
5.even? # => false
each文で数字を順に取り出し、even?メソッドで一つずつ偶数か判断し、偶数だった場合はcountに1を足していく。
each文の処理が終了し、countに代入された最終的な数が偶数の数となる。
まとめ
変数countに対しcount = 0しか設定できていなかった為、偶数だった場合のみ数をカウントしていく(count +=1)をできていなかった。