2016-02-03 1 views
1

Задача состоит в создании кредитного калькулятора на основе пользовательского ввода минимальных и максимальных лет платежей по кредиту, суммы кредита и минимальной и максимальной процентной ставки с добавочным значением, предоставляемым пользователем а также по темпам и количеству лет. Желаемый результат должен выглядеть следующим образом:Java Loan Calculator вложен в цикл, основанный на пользовательском вводе

Принцип: $ 275000,0 лет для погашения: 10 Проценты Ежемесячно Ставка


6,25 3087,7 6,75 3157,66 7,25 3228,53

Принцип: $ 275000,0 Годы погашения: 15 Проценты Ежемесячно Ставка платежа


6,25 2357,91 6,75 2433,5 7,25 2510,37

Принцип: $ 275000,0 лет для погашения: 20 Проценты Ежемесячно Оценить Оплата


6,25 2010,05 6,75 2091,0 7,25 2173,53

Пожалуйста, помогите мне исправить ошибки. Благодаря!

public static void main(String[] args){ 
      Scanner console = new Scanner (System.in);    

      System.out.println("This program computes monthly " + "mortgage payments."); 
      System.out.print("Enter the loan amount: "); 
      double loan = console.nextDouble(); 

      System.out.print("Enter the starting number of years to repay the loan: "); 
      int startingYears = console.nextInt(); 

      System.out.print("Enter the ending number of years to repay the loan: "); 
      int endingYears = console.nextInt(); 

      System.out.print("Enter the years increment between tables: "); 
      int incrementYears = console.nextInt(); 

      System.out.print("Enter the starting loan yearly interest rate, %: "); 
      double startingRate = console.nextDouble(); 

      System.out.print("Enter the ending loan yearly interest rate, %: "); 
      double endingRate = console.nextDouble(); 

      System.out.print("Enter the increment interest rate, %: "); 
      double incrementRate = console.nextDouble();    
      System.out.println();    

      System.out.println("Principle: $" + (double) loan); 
      System.out.printf("Years to repay: %d\n", startingYears); 
      System.out.println("-------- -------"); 

      double payment;    
       System.out.println("Rate\tPayment"); 

      for (int j = startingYears; j <= endingYears; incrementYears++) { 
      for (double i = startingRate; i <= endingRate; incrementRate++){ 



       int n = 12 * startingYears; 
        double c = startingRate/12.0/100.0; 
       payment = loan * c * Math.pow(1 + c, n)/(Math.pow(1 +c, n) - 1); 

       System.out.println(i + " " + payment); 
//    System.out.println(round2(startingRate) + "\t" + round2(payment)); 
       startingYears += incrementYears; 
      } 
      } 


     } 

     } 
+0

Как увеличиваем как счетчики? – Julia1677

ответ

0

для (Int J = startingYears; J < = endingYears; incrementYears ++) {

для (двойной I = startingRate, я < = endingRate; incrementRate ++) {

You никогда не увеличивают значения ваших счетчиков, то есть i и j, и поэтому значения i и j всегда будут равны инициализированному значению s, и эти петли будут работать бесконечно.

Увеличьте оба счетчика, чтобы они могли достичь условий прекращения, то есть j <= endingYears и i <= endingRate соответственно.

Вот фрагмент кода:

System.out.println("Principle: $" + (double) loan); 
for (int j = startingYears; j <= endingYears; j+=incrementYears) { 
    System.out.printf("Years to repay: %d\n", j); 
    System.out.println("-------- -------"); 
    System.out.println("Rate\tPayment"); 
    for (double i = startingRate; i <= endingRate; i+=incrementRate){ 
     int n = 12 * j; 
     double c = i/12.0/100.0; 
     double payment = loan * c * Math.pow(1 + c, n)/(Math.pow(1 + c, n) - 1); 
     System.out.println(i + "\t" + payment); 
    } 
    System.out.println(); 
} 
+0

Я не на 100% понимаю предложение. Нужно ли добавлять i + = incrementYears? – Julia1677

+0

для (Int J = startingYears; J <= endingYears; j ++) { \t \t \t для (два раза я = startingRate; я <= endingRate; я ++) { \t \t \t \t \t \t \t \t I + = incrementRate; \t \t \t \t \t \t \t \t \t \t \t Int N = 12 * startingYears; \t \t \t \t \t double c = startRate/12.0/100.0; \t \t \t \t оплата = ссуда * c * Math.pow (1 + c, n)/(Math.pow (1 + c, n) - 1); \t \t \t \t \t \t \t \t \t System.out.println (I + "" + платеж); // \t \t \t \t System.out.println (round2 (initialRate) + "\ t" + round2 (платеж)); // \t \t startRate + = incrementRate; \t \t \t} \t \t \t} \t \t \t J + = incrementYears; – Julia1677

+0

Обновлено решение. Замените все после 'System.out.println (« Принцип: $ »+ (двойной) кредит),' в вашем решении с приведенным выше фрагментом. – user2004685