2010-08-05 36 views
0

可能重复:
`-': nil can’t be coerced into Fixnum (TypeError)帮助' - ':无不能强迫Fixnum对象(类型错误)

有谁知道怎么来的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

你的问题是guest.arrived返回零。

  • 如果guestnil,那么你必须在90行错误说

    NoMethodError: undefined method `departure=' for nil:NilClass 
    
  • 如果departureDatenil,那么你会得到91行错误说

    NoMethodError: undefined method `-' for nil:NilClass 
    

    除此之外,第一行使用的to_i函数总是返回一个数 - 即使y ou nil"" from somewere else,nil.to_i and "".to_i都返回零。

  • 如果guest.arrived不存在,您还会得到一个NoMethodError

+0

嗯我明白你的意思了。当你把它放在那里就显而易见了。但后来我又感到困惑,我是否在“说服”它错了,然后说guest.arrived ?!因为它是一个自我方法,应该是一个类方法(如果你可以说在Ruby中)。我想说的是,它感觉在self.check_in和self.check_out之间以某种方式丢失数据。 – Sebastien 2010-08-05 15:29:15

2

你已经问昨天这完全相同的问题,答案仍然是完全相同的答案:问题是arrived方法guest回报nil,除非你真正显示的代码该方法,没有人可以做到这一点。

+0

我现在发布了checkin方法,并希望那是你在提及代码时所指的。谢谢。 – Sebastien 2010-08-05 15:23:50

相关问题