2015-01-08 6 views
0

Мне нужно создать приложение для оплаты автомобиля в java, которое запрашивает у пользователя основную сумму (P), процентную ставку (r) и количество ежемесячных платежей (м). Ежемесячный платеж автомобиля должна быть рассчитана по следующей формуле:Приложение для оплаты автомобилей с использованием уравнения с отрицательными показателями

P (г/12)/(1- (1 + г/12)^- м)

Это то, что я до сих пор ...

import java.util.Scanner; 
import java.lang.Math; //importing Scanner, Math, and NumberFormat classes 
import java.text.NumberFormat; 

class Exercise13{ 
    public static void main(String[] args){ 
     Scanner input=new Scanner(System.in); //creating Scanner 

     double principal, rate, numberOfMonths, payment; //declaring varibles 

     System.out.print("Principal: "); 
     principal=input.nextDouble(); 
     System.out.print("Interest Rate: "); //requesting and storing user input 
     rate=input.nextDouble(); 
     System.out.print("Number of monthly payments: "); 
     numberOfMonths=input.nextDouble(); 
     input.close(); //closing Scanner 

     payment=principal*(rate/12)/(1-(1+rate/12*)Math.pow(payment, -numberOfMonths)); //calculating monthly payment. Error in this line 

     NumberFormat money =NumberFormat.getCurrencyInstance(); //Formatting output 
     System.out.println("The monthly payment is:" (money.format(payment)); 



    } 
} 

Он не компилируется, и я действительно расстроен, потому что я провел много времени, и я не могу понять это.

Любая помощь приветствуется

+2

Нет сомнения в том, кто будет помогать вам с вашей проблемой _specific_, но я просто хотел бы отметить, что комментарии предназначены для _add_ полезной информации. Для меня что-то «импортирует математику»; // импортировать математическую библиотеку' на самом деле не делает этого :-) И, f, вы получаете ошибку во время компиляции, она _may_ будет полезна, если вы опубликуете ее, так что нам не нужно угадывать или вводить ваш код в Eclipse или нет. – paxdiablo

+0

Вот ваше уравнение с исправленным синтаксисом: payment = principal * (rate/12)/(1-Math.пау (1 + ставка/12, -1 * NUMBEROFMONTHS)); – pmorken

+0

'(1 + rate/12 *)' имеет конечный '*', который не имеет никакого операнда. Я предполагаю, что вы хотите, чтобы это было '(1 + rate/12) *' вместо этого? – Oli

ответ

0

Формула

Что вы имеют и ошибки:

payment=principal*(rate/12)/(1-(1+rate/12*)Math.pow(payment, -numberOfMonths)); 
  • бинарный оператор * не имеет второй аргумента в выражении (1+rate/12*)
  • неинициализированного payment переменные используются в качестве первого аргумента Math.pow()
  • требуемой формулы P(r/12)/(1-(1+r/12)^-m) не реализуются с помощью вышеприведенного утверждения

Что это должно быть для P(r/12)/(1-(1+r/12)^-m):

payment = principal * rate/12/(1 - Math.pow(1 + rate/12, -numberOfMonths)); 

Выход

Что у вас есть, и ошибки:

System.out.println("The monthly payment is:" (money.format(payment)); 
  • Объединение строк Оператор + отсутствует между символьной строкой и отформатированной оплатой
  • Это не ясно является ли процентная ставка интерпретирована как процентная доля или ХТ десятичной

Что это должно быть для ясности:

System.out.println("Rate: " + NumberFormat.getPercentInstance().format(rate)); 
System.out.println("Payment: " + NumberFormat.getCurrencyInstance().format(payment)); 
1

Я думаю, что было бы хорошо, если вы нарушите вашу формулу на маленькие кусочки

double rate1 = rate/12/100; // monthly interest rate 
    double numberOfMonths = 12 * Y;   // number of months 

    double payment = (Principal * rate1)/(1 - Math.pow(1+rate1, -numberOfMonths)); 

Я надеюсь, что помогает