【发布时间】:2017-02-01 16:07:48
【问题描述】:
我正在做一个 Ruby 练习,但没有得到我想要的输出。
我认为这个问题从我的算法的第 2 步开始。while 循环的计数器让我有点困惑,我不确定如何结束 while 循环。但除此之外,我认为代码大部分都可以。
编写一个程序,它将找出 1000 到 3000 之间的所有此类数字(都包括在内),使得该数字的每个数字都是偶数。
获得的数字应该以逗号分隔的顺序打印在一行上。
我要实现:
- 遍历整个范围 (
1000..3000) 并识别所有偶数,并将它们存储到名为array_evens的单独数组中。 - 遍历
array_evens并将每个偶数分成不同的数字。 - 遍历所有这些数字,并使用
even?确定每个数字是偶数还是假。 - 如果该数字是偶数,则将其推送到名为
all_evens_baby的数组中
这是我的代码:
range = (1000..3000)
array_even = Array.new()
even_digits_number = []
n = 0 #counter variable
all_evens_baby = []
even_or_odd = nil
range.select do |x|
if x.even?
array_even = array_even.push(x)
while (n <= array_even.length)
#The placement of this while loop may be wrong.
#iterate over all evens to divide all numbers into singular digits
current_divided_number = array_even[n].to_s.chars
current_divided_number.map do |x|
#iterate over all digits to determine if even or odd
even_or_odd = x.to_i.even? #=> true or false
if even_or_odd == true
all_evens_baby = even_digits_number.push(array_even[n])
else
end
end
n+=1
end
end
end
【问题讨论】:
-
您使用的是哪个 ruby 版本?
-
我使用的是 2.4 版
标签: ruby