Есть 3 шага, чтобы исправить это
- Удалить 1-е выражение if,
- Вы должны переместить это:
elsif number % 3 == 0 && number % 5 == 0
на 1-й шаг - Добавить
else puts number
это должно выглядеть следующим образом:
def count
numbers = (1..20)
numbers.each do |number|
if number % 3 == 0 && number % 5 == 0
puts "#{number} i am divisible by 3 & 5"
elsif number % 3 == 0
puts "#{number} i am divisible by 3"
elsif number % 5 == 0
puts "#{number} i am divisible by 5"
else
puts number
end
end
end
UPD
Давайте добавим пояснение об этих шагах:
1-й и 3-й этапы: деление на 1 всегда возвращает 0 в результате, поэтому первая причина - ошибка в логи c, а вторая - как мы теперь знаем, это всегда 0, нам не нужно проверять это еще один раз.
2-й шаг: когда мы проверяем, например, 3
с elsif number % 3 == 0
, он возвращает true, поэтому следующие операторы if проверяться не будут, чтобы исправить это, мы должны сначала добавить проверку для number % 3 == 0 && number % 5 == 0
Благодаря @ 3limin4t0r, вы правы, это всегда лучше объяснить.