2016-10-24 6 views
1

これは私がこれまで行ってきたことですが、ユーザーが2つ以上の車種を入力すると配列は最初の値を保存しません。 car.get_メソッドを削除すると、プログラムはユーザーの入力を保存せずに正常に動作します。私が行方不明の方法はありますか?配列がルビにユーザー入力を保存していません

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

貼り付けたコードを確認できますか?そのスクリプトはCarクラスの中で定義されていますか? – JCorcuera

+0

私はスクリプトを、車のクラス内に保持しなければならないかどうかはわかりませんが、現在です。 –

+0

実際には、このコードには組織のスタンドポイントの問題がたくさんあります –

答えて

0

[OK]をので、主な問題は、あなたがCarクラスが定義されているCar.newを呼び出すことです。あなたは車のクラスの車の配列を持ってはいけません。あなたは、attr_accessorその後、あなたはあなたがinitializeメソッドを使用する方法に見て、しかし車のクラスに最初の良い取引をリファクタリングする必要があり、この

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 

のような何かができる車のアレイを有するDealershipクラスを作成してみてください、およびinstance variables

+0

このコードを実行すると、33行目のCars :: carの初期化されていない定数があります –

関連する問題