任务是根据用户对贷款支付的最小和最大年限,贷款金额以及最小和最大百分比率的输入创建贷款计算器,并使用用户给出的递增值以及年份。 期望的输出应如下所示:
原则: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 :(得分:0)
for(int j = startingYears; j&lt; = endingYears; incrementYears ++){
for(double i = startingRate; i&lt; = endingRate; incrementRate ++){
您永远不会递增计数器的值,即i
和j
,因此i
和j
的值将始终等于初始值,这些值循环将运行无限次。
增加两个计数器,使其能够分别达到终止条件,即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();
}