它说&Fixnum与nil的比较失败'我不知道为什么

时间:2017-04-12 02:36:00

标签: ruby

A = [5,3,1,4,2]

4.downto(1) do |i|
  0.upto(i) do |j|
    #here i am making the actual buble sort

    if A[j] > A[j + 1]
      tmp = A
      A[j + 1] = A[j]
      A[j] = tmp
    end
  end
end

#just printing the array
A.each do |i|
  print i
end

gets()

有人知道为什么会这样吗?我只是不知道nil元素在哪里。

我已经尝试了一切,我知道但是我在学习,但我无法找到错误。

感谢您的帮助,还有另外一个小问题,当我尝试使for循环它不起作用时,这不是什么大问题因为不止一个做同样事情的方法,但仍然......

1 个答案:

答案 0 :(得分:3)

i = 4j = i + 1 #=> 5时,您尝试执行

A[j] > A[j + 1]

评估为

A[4] > A[5]

然后到

2 > nil

这引发了异常,因为2.class #=> FixnumFixnum#>要求>的参数为数字。在Ruby v2.4中,Fixnum方法已转换为Integer方法(例如,Integer#>)。

相关问题