2015-02-15 6 views
-2

Итак, для этого я, кажется, получаю только «Бесконечность» за долларовое количество вывода. Я думаю, что это имеет какое-то отношение к математике. (Не обращайте внимания на неряшливый код, мне сказали отлаживать его, не изменяя его слишком сильно). Это единственная проблема, с которой я, похоже, сталкиваюсь. Помимо этого все остальное работает нормально.Как получить правильный результат?

/* Chapter 3 Debugging Assignment 
*Programmer: 
*Date: 
*Program Name: Bert,java 
*Purpose: 
*/ 

import java.util.Scanner; 

public class bert { 

    public static void main(String[] args) { 

     //Declaring Variables 
     int price, downPayment, tradeIn, months, loanAmt, interest; 
     double annualInterest, payment; 
     String custName; 

     Scanner reader = new Scanner(System.in); 

     //Get Input from User 
     System.out.println("What is your first name? "); 
     custName = reader.next(); 
     System.out.print("What is the price of the car? "); 
     price = reader.nextInt(); 
     System.out.print("What is the downpayment? "); 
     downPayment = reader.nextInt(); 
     System.out.print("What is the trade-in value? "); 
     tradeIn = reader.nextInt(); 
     System.out.print("For how many months is the loan? "); 
     months = reader.nextInt(); 
     System.out.print("What is the decimal interest rate? "); 
     annualInterest = reader.nextDouble(); 

     //Output 
     calculatePayment(price, downPayment, tradeIn, (int) annualInterest, months); 
    } 

    public static void calculatePayment(int price, int downPayment, int tradeIn, 
      int months, double annualInterest) { 

     double interest; 
     int loanAmt; 
     double payment; 

     //Calculations 
     interest = (double) annualInterest/ (double) 12 ; 
     loanAmt = (int) (price - downPayment - tradeIn); 
     payment = loanAmt/((1.0/interest) - (1.0/(interest * Math.pow(1.0, annualInterest)))); 
     String custName = "Any Name"; 

     System.out.print("The monthly payment for "); 
     System.out.print(custName + " is $ "); 
     System.out.println((double) payment); 

     return; 
    } 
} 
+0

@MadProgrammer на самом деле он этого не делает. Следующий вызов пропустит новую строку. – immibis

+0

Скажите мне @panzo, почему вы передаете процентную ставку (конвертируется в 'int', поэтому с десятичной частью отрубается), как количество месяцев, и количество месяцев в качестве процентной ставки? – immibis

+0

@immibis Знаешь, я действительно ненавижу «Сканер» – MadProgrammer

ответ

0

Аргументы для расчетаPayment не совпадают.
calculatePayment (price, downPayment, tradeIn, (int) yearInterest, months); должно быть
calculatePayment (price, downPayment, tradeIn, months, annualInterest);
Ваша математика плохая.
Math.pow (1,0, annualInterest) является всегда 1.
поэтому у вас есть 1/проценты - 1/интерес который 0. то есть loanAmt/0,0 ==>Бесконечность
Возвращайтесь и проверьте расчеты оплаты

+0

Я изменил это, но он по-прежнему работает как бесконечность, это проблема с математикой или самим кодом. – panzo

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