In my program Im getting an error which says ./ruby_camping.rb:91:in `-': nil can't be coerced into Fixnum (TypeError). What I would like to do is to checkout a guest that I have just checked in. Here is the block of code for the checkout part:
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
How come departureDate still is nil? Thankful for help!
To get a more detailed answer, you would have to indicate which line was line 91 in your program. However to point you in the right direction, if you're seeing nil can't be coerced into Fixnum
then it means something on the right hand side of a -
is nil
. e.g.
irb(main):001:0> 5 - nil
TypeError: nil can't be coerced into Fixnum
from (irb):1:in `-'
from (irb):1
From your code the only possible example of this I can see is guestStayedDays = departureDate - guest.arrived
so I would check the value of guest.arrived
.
If something on the left hand side of a -
were nil
e.g. departureDate
or plot
then you would get undefined method '-' for nil:NilClass
instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With