有谁知道guest.arrived怎么会是零?!这是我在程序中使用的结帐方法的一小部分。错误指向代码中第91行,这是该代码块的最后一部分:
departureDate = gets.chomp.to_i
guest.departure = departureDate
guestStayedDays = departureDate - guest.arrived # Days the guest have stayed
我似乎无法弄清楚这一点。 get.chomp.to_i的问题是它返回nil吗?还是回归0?但话说再说那不会给我这个错误。那么客人是零还是实际上是组合客人。这是问题所在吗?值得一提的是,抵达是在我的签入方式中声明的,其中客人说明其到达日期。它以某种方式丢失了吗?
感谢您的回答,我将发布签到方法以及:
def self.check_in
puts "Welcome to the checkin"
puts "Please state your first name: "
firstName = gets.chomp
puts "Please state your last name:"
lastName = gets.chomp
puts "Write your address: "
address = gets.chomp
puts "and your phone number: "
phone = gets.chomp
puts "finally, your arrival date!"
arrived = gets.chomp.to_i
newPLot = $camping.generateParkingLot
guest = Guest.new(firstName, lastName, address, phone, arrived)
$camping.current_guests[newPLot-1] = guest
$camping.all_guests.push(guest) # lägg till gästen i historiken
puts "The registration was a success!! You have received plot " + newPLot.to_s + "."
end
这里定义了到达的变量,当我在我的结账方法中放入$ camping.current_guests时,我会看到所有信息。谢谢!
答案 0 :(得分:2)
你昨天已经问过这个完全相同的问题,答案仍然是完全相同的答案:问题是arrived
guest
方法}}返回nil
,除非你实际上显示该方法的代码,否则任何人都无法做到。
答案 1 :(得分:0)
您的问题是guest.arrived
正在返回nil。
如果guest
是nil
,那么第90行就会出现错误
NoMethodError: undefined method `departure=' for nil:NilClass
如果departureDate
为nil
,那么您在第91行上会收到错误
NoMethodError: undefined method `-' for nil:NilClass
除此之外,第一行使用的to_i
函数始终返回一个数字 - 即使您从其他地方获得nil
或""
,nil.to_i
和{ {1}}都返回零。
如果"".to_i
不存在,您还会获得guest.arrived
。