` – ‘:nil不能被强制转换为Fixnum(TypeError)

在我的程序中我得到一个错误,上面写着./ruby_camping.rb:91:in` – ‘:nil无法强制进入Fixnum(TypeError)。 我想做的是结账我刚刚签到的客人。以下是结账部分的代码块:

def self.check_out puts "Welcome to checkout!" puts $camping.current_guests puts " Here are the current guests, who do you want to checkout?!" puts "State plot number " plot = gets.chomp.to_i guest = $camping.current_guests[plot-1] puts "State the date for your checkout (a number bigger then " + guest.arrived.to_s + "): " # it should not be possible for a guest to checkout before she has checked in departureDate = gets.chomp.to_i guestStayedDays = departureDate - guest.arrived #Days the guest has stayed while (guestStayedDays < 1) do puts "The date for checkout is not valid. The guest checked in " + guest.arrived.to_s puts "Please state a new date." departureDate = gets.chomp.to_i guestStayedDays = departureDate - guest.arrived end guest.departure = departureDate guest.plot.increase(guestStayedDays) # increases the electricity meter puts guest # prints the guest $camping.current_guests[plot-1] = nil # emptys the plot end end 

为什么离开日期仍然是零? 感谢您的帮助!

要获得更详细的答案,您必须指明程序中第91行是哪一行。 然而,为了指出你正确的方向,如果你看到nil can't be coerced into Fixnum那么它意味着一个在右边的东西-nil 。 例如

 irb(main):001:0> 5 - nil TypeError: nil can't be coerced into Fixnum from (irb):1:in `-' from (irb):1 

从你的代码我可以看到的唯一可能的例子是guestStayedDays = departureDate - guest.arrived所以我会检查guest.arrived的值。

如果- 左侧的某些内容nil例如departureDateplot那么您将获得undefined method '-' for nil:NilClass