Таблица амортизации

Эта программа рассчитает таблицу амортизации для пользователя. Проблема в том, что мое назначение требует использования подпрограмм. Я полностью забыл об этом, есть идеи о том, как изменить это, чтобы включить подпрограммы?

public class Summ {

public static void main(String args[]){
double loanamount, monthlypay, annualinterest, monthlyinterest, loanlength; //initialize variables

Scanner stdin = new Scanner (System.in);    //create scanner

System.out.println("Please enter your loan amount.");
loanamount = stdin.nextDouble();                                            // Stores the total loan amount to be payed off
System.out.println("Please enter your monthly payments towards the loan.");
monthlypay = stdin.nextDouble();                                            //Stores the amount the user pays towards the loan each month
System.out.println("Please enter your annual interest.");
annualinterest = stdin.nextDouble();                                        //Stores the annual interest
System.out.println("please enter the length of the loan, in months.");
loanlength = stdin.nextDouble();                                            //Stores the length of the loan in months

monthlyinterest = annualinterest/1200;                                      //Calculates the monthly interest

System.out.println("Payment Number\t\tInterest\t\tPrincipal\t\tEnding Balance");    //Creates the header
double interest, principal;                                                 //initialize variables
int i;                                                                      

/* for loop prints out the interest, principal, and ending 
 * balance for each month. Works by calculating each, 
 * printing out that month, then calculating the next month,
 * and so on.
 */

for (i = 1; i <= loanlength; i++) {                                 
    interest = monthlyinterest * loanamount;
    principal = monthlypay - interest;
    loanamount = loanamount - principal;
    System.out.println(i + "\t\t" + interest
    + "\t\t" + "$" + principal + "\t\t" + "$" + loanamount);
    }
        }
    }

2 ответа

Решение

Любые идеи о том, как изменить это, чтобы включить подпрограммы?

Ну, тебе лучше сделать это наоборот; то есть выяснение, какими должны быть методы, прежде чем писать код.

То, что вы делаете, это рефакторинг формы или кода. Вот неофициальный рецепт для этого.

  1. Изучите код, чтобы найти разделы, которые выполняют определенную задачу и дают единый результат. Если вы можете придумать простое имя, которое отражает то, что делает задание, то это хороший знак. Если у задачи мало зависимостей от локальных переменных, в которых она в данный момент "сидит", это тоже хороший знак.
  2. Напишите объявление метода с аргументами для передачи значений переменных и типом результата для возврата результата.
  3. Скопируйте существующие операторы, которые выполняют задачу, в метод.
  4. Настройте тело нового метода так, чтобы ссылки на локальные переменные из старого контекста были заменены ссылками на соответствующие аргументы.
  5. Разобраться с возвращенным значением.
  6. Перепишите исходные операторы как вызов вашего нового метода.
  7. Повторение.

Такая среда, как Eclipse, может позаботиться о ручной работе по рефакторингу.

Тем не менее, настоящий навык состоит в том, чтобы решить, как лучше разделить "кусок" кода на отдельные задачи; то есть способ, который будет иметь смысл для тех, кто должен читать / понимать ваш код. Это приходит с опытом. И IDE не может принимать эти решения за вас.

(И я говорил, что с самого начала легче спроектировать / реализовать методы?)

Я удалил свой предыдущий комментарий, ответив на свой вопрос, прочитав соответствующие теги:-)

В качестве примера, определите такой метод в своем классе:

public double CalculateInterest(double loanAmount, double interestRate) {
    //do the calculation here ...
}

А затем вызвать метод по имени в другом месте в вашем коде класса, например

double amount = CalculateInterest(5500, 4.7);
Другие вопросы по тегам