From: Joz Private Date: 2012-10-09T05:35:09+09:00 Subject: Re: Undefined method `-' for nil class Developer attr_accessor :name, :networth, :loans, :banks_loaned_from, :bankrupt def initialize(name, networth, loans, banks_loaned_from, bankrupt) @name, @networth, @loans, @banks_loaned_from, @bankrupt = name, networth, loans, banks_loaned_from, bankrupt end def is_solvent? if networth >= owes_amount then true else false end end def owes_amount total_loans = 0 loans_array = loans.split(',') loans_array.each { |item| total_loans += item.to_f } total_loans end def owes_bank(bank) loans_array = loans.split(',') banks_array = banks_loaned_from.split(',') banks_array.each do |item| if bank == item then i = banks_array.index(item) loans_array[i].to_f else puts("No such bank - check name.") end end end end ************************************************************************** ************************************************************************** class Bank attr_accessor :name, :amount_of_deposits, :amount_of_loans def initialize(name, amount_of_deposits, amount_of_loans) @name, @amount_of_deposits, @amount_of_loans, = name, amount_of_deposits, amount_of_loans end def moves_loans(amount) amount_of_loans -= amount amount_of_deposits += (amount*0.5) end def bank_is_solvent? if amount_of_deposits >= amount_of_loans true else false end end end ************************************************************************** ************************************************************************** require_relative '.\Bank.rb' require_relative '.\Developers.rb' class Bankrupter # creating the developers L = Developer.new("L", 650000, "1500000, 500000, 1000000, 300000", "AIB,BOI,Ulster,Anglo", false) M = Developer.new("M", 2100000, "1400000, 2000000", "AIB,Anglo", false) R = Developer.new("R", 900000, "500000, 700000, 1000000, 1200000", "AIB,BOI,RSB,Anglo", false) MF = Developer.new("MF", 1200000, "400000, 2000000, 8000000", "AIB,Ulster,Anglo", false) MN = Developer.new("MN", 3000000, "100000, 300000", "BOI,RSB", false) # creating the banks AIB = Bank.new("AIB", 450, 3000000, 500000, false) Anglo = Bank.new("Anglo", 520, 5000000, 12000000, false) BOI = Bank.new("BOI", 600, 2500000, 2500000, false) RBS = Bank.new("RBS", 530, 2800000, 1700000, false) Ulster = Bank.new("Ulster", 580, 2000000, 1500000, false) developer_object_array = [ L, M, R, MF, MN] bank_object_array = [ AIB, Anglo, BOI, RBS, Ulster ] #Now, test if they are solvent or bankrupt, and then the knock-on effects for the banks ... developer_object_array.each do |dev| if dev.is_solvent? == false then puts("#{dev.name} is bankrupt.") dev.bankrupt = true bank_object_array.each do |bank| bank.moves_loans end else puts("#{dev.name} is not bankrupt.") end end end -- Posted via http://www.ruby-forum.com/.