2016-10-24 3 views
1

C'est ce que j'ai jusqu'à présent, mais le tableau n'enregistre pas la première valeur si l'utilisateur entre 2 types de voiture ou plus. Si je supprime les méthodes car.get_, le programme fonctionne correctement sans enregistrer les entrées des utilisateurs. Y a-t-il une méthode qui me manque?Tableau ne sauvegardant pas l'entrée de l'utilisateur dans ruby ​​

class Cars 

    def set_make(make) 
    end 

    def set_model(model) 
    end 

    def set_year(year) 
    end 

    array_of_cars = Array.new 

    print "How many cars do you want to create? " 
    num_cars = gets.to_i 
    puts 

    for i in 1.. num_cars 
    puts 
    print "Enter make for car #{i}: " 
    make = gets.chomp 

    print "Enter model for car #{i}: " 
    model = gets.chomp 

    print "Enter year of car #{i}: " 
    year = gets.to_i 

    c = Car.new 

    c.set_make(make) 
    c.set_model(model) 
    c.set_year(year) 

    array_of_cars << c 
    end 

    puts 
    puts "You have the following cars: " 

    for car in array_of_cars 
    print "#{car.get_year} #{car.get_make} #{car.get_model}" 
    end 
end 
+0

s'il vous plaît pouvez-vous vérifier le code que vous avez collé? Ce script est-il défini dans la classe Car? – JCorcuera

+0

Je ne sais pas si je dois garder le script, dans la classe de voiture, mais c'est actuellement le cas. –

+0

En fait il y a un tas de problèmes avec ce code d'un point de vue de l'organisation –

Répondre

0

Ok, donc le principal problème est que vous appeler la Car.new où la classe Car est définie. Vous ne devriez pas avoir un tableau de voitures dans la classe de voiture. Vous pouvez essayer de créer une classe Dealership qui a une gamme de voitures alors que vous pourriez faire quelque chose comme ça

class Dealership 

    attr_accessor :car_lot 

    def initialize 
    @car_lot = [] 
    end 

    def add_car(car) 
    @car_lot << car 
    end 
end 
crazy_carls = Dealership.new 
car1 = Car.new(make, model, year) 

crazy_carls.add_car(car1) 
crazy_carls.car_lot.each do |car 
    print "#{car.get_year} #{car.get_make} #{car.get_model}" 
end 

Vous devez factoriser la classe voiture une bonne affaire d'abord que, regardez sur la façon d'utiliser la méthode initialize, attr_accessor et instance variables.

+0

Lors de l'exécution de ce code, il est dit qu'il y a une constante non initialisée pour Cars :: voiture sur la ligne 33 –