Arrays 将值推入散列中的数组

Arrays 将值推入散列中的数组,arrays,ruby,sorting,hash,radix-sort,Arrays,Ruby,Sorting,Hash,Radix Sort,我研究这个代码已经有一段时间了。在我尝试将一个值放入散列中的数组之前,一切似乎都很顺利。 我收到一条错误消息,该值为零,但是我在试图将它们存储到数组中之前检查了所有有问题的值,仍然不允许我这样做。有什么想法吗?bucket[sdigit].push(num)是告诉我其中一个值为nil的行 arr = [] while arr.size < 100 arr.push(rand(1000)) end for outer_index in arr puts "for outer

我研究这个代码已经有一段时间了。在我尝试将一个值放入散列中的数组之前,一切似乎都很顺利。 我收到一条错误消息,该值为零,但是我在试图将它们存储到数组中之前检查了所有有问题的值,仍然不允许我这样做。有什么想法吗?bucket[sdigit].push(num)是告诉我其中一个值为nil的行

    arr = []
while arr.size < 100
  arr.push(rand(1000))
end
for outer_index in arr
  puts "for outer index(#{outer_index} in arr"
  buckets = Hash.new()
  puts "buckets = Hash.new()"
  puts "for j in 0..9"
  for j in 0..9
    buckets[j.to_s] = Array.new()
    #buckets[j.to_s] = [j]
    puts "buckets[j.to_s(#{buckets[j.to_s]})"
  end

for inner_index in arr
  puts "for inner_index(#{inner_index}) in arr"
  num = inner_index
  puts "num(#{num}) = inner_index(#{inner_index})"

  sdigit = num.to_s[-1]
  puts "sdigit(#{sdigit}) = num.to_s[-1](#{num.to_s[-1]})"
  digit = sdigit.to_i
  puts "digit(#{digit}) = sdigit.to_i(#{sdigit.to_i})"
  puts "buckets[digit] = #{buckets[sdigit]}"
  puts "#{buckets["1"]}"
  puts "o#{num}"
  puts buckets
 buckets[sdigit].push(num)
  puts "buckets[digit].push(num)(#{buckets[digit].push(num)})"

end
  arr = buckets.values.flatten

end `
arr=[]
而arr.size<100
arr.push(兰特(1000))
结束
对于arr中的外部索引
将“用于arr中的外部索引(#{outer_index})”
bucket=Hash.new()
放入“bucket=Hash.new()
在0..9中放入“对于j”
对于0..9中的j
bucket[j.to_s]=Array.new()
#桶[j.to_s]=[j]
放置“bucket[j.to_s({bucket[j.to_s]})”
结束
用于arr中的内部_索引
将“用于arr中的内部索引(#{internal_index})”
num=内部索引
放置“num(#{num})=内部索引(#{内部索引})”
sdigit=num.to_s[-1]
放置“sdigit(#{sdigit})=num.to_s[-1](#{num.to_s[-1]})”
数字=数字到
将“digit(#{digit})=sdigit.to_i(#{sdigit.to_i})”
放置“bucket[digit]=#{bucket[sdigit]}”
放置“#{bucket[“1”]}”
放入“o{num}”
放桶
bucket[sdigit].push(num)
放置“bucket[digit].push(num)(#{bucket[digit].push(num)})”
结束
arr=bucket.values.flatte
结束`
bucket[sdigit].push(num)是告诉我其中一个值的行 是零

如果查看错误消息:

top.rb:30:in `block (2 levels) in <main>': undefined method `push' for nil:NilClass (NoMethodError)
bucket[sdigit].push(num)是告诉我其中一个值的行 是零

如果查看错误消息:

top.rb:30:in `block (2 levels) in <main>': undefined method `push' for nil:NilClass (NoMethodError)