2013-10-12 1 views
0

Я попытался сделать калькулятор оплаты кредитной картой. Вот весь код:Ошибка программирования Ruby (неопределенная локальная переменная)

m_counter = 0 

def calc_payment 
    payment_percentage = payment/balance * 100 
    monthly_apr = apr/12 
    while balance > 0 
    m_counter = m_counter + 1 
    balance = balance/100 * monthly_apr 
    balance = balance - payment 
    end 
    puts 
    puts "Monthly payment: $" + payment 
    puts "Balance payoff: " + m_counter + " months" 
end 

puts "Welcome to your credit card payment calculator!" 
puts 

puts "Please tell me your credit card balance." 
balance = gets.chomp.to_f 

puts "Please enter your interest rate %." 
apr = gets.chomp.to_f 

puts "How much $ would you like to pay every month?" 
payment = gets.chomp.to_f 

calc_payment 

Я получаю сообщение об ошибке:

'calc_payment' не определены локальные переменные или метод 'оплата' для главного: Object (NameError)

+1

Vori, небольшое предложение: '(оплата/баланс) * 100' или (лучше)' 100 * платеж/balance', а не 'платеж/баланс * 100' (понятнее). Кроме того, вы могли бы «ставить» hi \ n \ n "', а не 'puts" hi "; ставит; puts' (только стилистическая разница). –

ответ

0

Ваш вопрос вращается вокруг переменной области. payment имеет локальный масштаб, поэтому функция calc_payment не может «видеть» его. Здесь я изменил вашу программу, чтобы передать payment, balance и apr в функцию calc_payment. Я также переместил m_counter в функцию.

def calc_payment(payment, balance, apr) 
    m_counter = 0 
    payment_percentage = payment/balance * 100 
    monthly_apr = apr/12 

    while balance > 0 
    m_counter = m_counter + 1 
    balance = balance/100 * monthly_apr 
    balance = balance - payment 
    end 

    puts 
    puts "Monthly payment: $" + payment 
    puts "Balance payoff: " + m_counter + " months" 

end 

puts "Welcome to your credit card payment calculator!" 
puts 

puts "Please tell me your credit card balance." 
balance = gets.chomp.to_f 

puts "Please enter your interest rate %." 
apr = gets.chomp.to_f 

puts "How much $ would you like to pay every month?" 
payment = gets.chomp.to_f 

calc_payment(payment, balance, apr) 

 Смежные вопросы

  • Нет связанных вопросов^_^