'-': ноль не может быть принужден в Fixnum (TypeError)

В моей программе я получаю ошибку, которая говорит что./ruby_camping.rb:91:in '-': ноль не может быть принужден в 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

Каким образом departureDate все еще является нолем? Благодарный за справку!

7
задан Sebastien 4 August 2010 в 15:19
поделиться

1 ответ

Чтобы получить более подробный ответ, вам нужно указать, какая строка была строкой 91 в вашей программе. Однако, чтобы указать вам правильное направление, если вы видите, что nil нельзя принудительно преобразовать в Fixnum , то это означает что-то в правой части - равно nil . например

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

Из вашего кода я могу видеть единственный возможный пример этого: guestStayedDays = leaveDate - guest.arhibited , поэтому я бы проверил значение guest.arhibited .

Если что-то в левой части из - было ноль , например ОтправительДата или график , тогда вместо этого вы получите undefined метод '-' для nil: NilClass .

24
ответ дан 6 December 2019 в 07:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: