我正在尝试获取55
在数组中出现的次数。
我尝试使用一个条件声明如果数字为%×5,则打印2。这就是我所拥有的:
def virus(array)
index = 0
array.length.times do
if array[index] % 5
p 2
break
end
index = index + 1
end
end
p virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44])
我的输出应该是2,但是我得到2
和nil
。
答案 0 :(得分:2)
这可能是您的代码的解决方法,因为您有p 2
打印2而不是计数器:
def virus(array)
index = 0
count = 0
array.length.times do
if array[index]%5 == 0
count +=1
end
index = index + 1
end
return count
end
如果元素可以被5整除(count
),则需要添加一个if array[index]%5 == 0
变量,或者可能需要检查元素是否等于55。
没有必要中断,或者您缺少一些要计数的元素。此外,break
返回nil
,这就是为什么将其打印出来的原因。
最后,您需要返回计数。
构建自定义循环是一种有用的学习方法,但是我也建议您看看https://ruby-doc.org/core-2.5.0/Enumerable.html#method-i-count,只是使用Ruby内置方法:
array = [11, 22, 33, 44, 55, 66, 77, 66, 55, 44]
array.count { |e| e % 5 == 0 } #=> 2
答案 1 :(得分:0)
[11, 22, 33, 44, 55, 66, 77, 66, 55, 44].count(55)
# => 2
答案 2 :(得分:-1)
代替p virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44])
试试看:
def virus(array)
index = 0
array.length.times do
if array[index] % 5
puts 2
break
end
index = index + 1
end
end
puts virus([11, 22, 33, 44, 55, 66, 77, 66, 55, 44])
它将仅返回2 ...