Предполагая, что процентная ставка будет введена в процентах, для расчета mnthintrest
потребуется дополнительное умножение на 1/100, т. Е. 0,01
mnthintrest = lamnt*mintrestrate*(0.01);
Вам также необходимо отредактировать переменную pay to mpay
System.out.println("The first month intrest rate is:" + pay);
Я думаю, что ваши логики c для денег, выплачиваемых в месяц, должны (как другие предлагали) - уменьшить сумму кредита, пока она не достигнет нуля.
Теперь перейдем к реализации, вы будете уменьшая количество и поскольку мы не хотим, чтобы исходные данные (переменные) были затронуты, мы могли бы сначала сохранить их во временной переменной. Для отслеживания #number платежа мы можем сохранить количество месяцев в другой переменной.
Можно придумать что-то вроде этого:
double temp = lamnt;
int monthNumber = 1;
while(temp>0){
mnthintrest = temp*mintrestrate*0.01;
double principlePaidPerMonth= mpay- mnthintrest;
temp = temp - principlePaidPerMonth; // reducing the principle amount paid before printing
System.out.println("\nAmount left after payment "+monthNumber+" is:" + temp);
System.out.println("This month intrest is:" + mnthintrest);
System.out.println("Principle paid is:" + principlePaidPerMonth);
monthNumber++;
}
// text to be printed could be different
Хорошей практикой является сохранение переменной имена как можно более значимые и объявлять переменные как можно ближе к их первому использованию. Таким образом, вы можете объявить переменные для процентов и процентной ставки как раз во время инициализации выше, где начинается часть while l oop.
double mintrestrate = intrestrate/12;
double mnthintrest = lamnt*mintrestrate;
Для форматирования вы можете использовать System.out.printf()
вместо println
- это может помочь отформатировать количество цифр, показанных после десятичной дроби
Для получения точности - вы можете использовать абсолютные / потолочные функции, доступные в классе Math.