所以我是java的一个(主要)新手,我正在编写一个简单的程序,打印出每月贷款支付表。我已经将格式化了,但嵌套的for循环计算正在我的脑海中。我需要能够扣除每月50美元的付款,并计算出我从用户首次贷款1000美元时提出的利率。
到目前为止,我尝试过的所有内容都会导致无限循环,或者在所有12个月内打印出第一个平衡计算。
这可能是一个非常明显的问题,但任何反馈都会非常感激! For循环对我来说不是很直观,并且盯着这段相同的代码阻止了我的进步!
( ..... )
//this method prompts the user to enter the annual interest rate and then prints it
//along with the initial loan, monthly payment, and a simple loan payment table for
//one year
private static void simpleLoanPaymentTable() {
Scanner CONSOLE = new Scanner(System.in);
double annualInterestRate;
double initialLoan = 1000.0;
double monthlyPayment = 50.0;
System.out.println("Please enter the annual interest rate:");
annualInterestRate = CONSOLE.nextDouble();
double percentAnnualRate = (annualInterestRate/100);
double percentMonthlyRate = (percentAnnualRate/12);
System.out.println();
System.out.println("The initial loan is $1000.0");
System.out.println("The monthly payment is $50.0");
System.out.println("The annual interest rate is " + annualInterestRate + "%");
System.out.println();
System.out.println("Simple Loan Payment Table For One Year");
System.out.println();
System.out.println(" Month Balance");
//create 12 rows for the months
for(int row = 1; row <= 12; row++) {
//calculate monthly balance
for(double i = 0; i <= initialLoan; i++) {
i = (initialLoan-monthlyPayment+(initialLoan*percentMonthlyRate));
System.out.println(" " + row + " " + i);
}
}
System.out.println();
}
答案 0 :(得分:0)
你认为这是做什么的?
for(double i = 0; i <= initialLoan; i++) {
i = (initialLoan-monthlyPayment+(initialLoan*percentMonthlyRate));
System.out.println(" " + row + " " + i);
}
实际上正在进行的是您一遍又一遍地为i
分配相同的值。
用铅笔和纸坐下来,手工计算贷款。然后将您经历的过程转换为代码。
提示:基于我认为您应该做的事情,内部循环不应该是for
循环。
答案 1 :(得分:0)
不要更改for循环内部的循环迭代器。它已经在循环顶部的每次迭代中被更改;你需要在循环中做的是使用这些迭代器。
所以在你的情况下,你说
for(int row = 1; row <= 12; row++) {
表示从row = 1开始,每次迭代都增加1,直到你不再小于或等于12.然后你说
for(double i = 0; i <= initialLoan; i++) {
表示从i = 0开始,每次迭代增加1,直到你的初始贷款小于或等于。请注意,某些东西还没有加起来:你的迭代器我不应该增加1,直到你得到初始贷款,(我相信)它应该迭代1,直到你计算的贷款到达初始贷款。
然后在nexted循环中,使用这两个迭代器(但不要更改它们)来计算当前在行/列中的贷款。
这将解决您的无限循环问题(除非数学仍然不正确),但仍可能不是您正在寻找的答案。问问自己,你的行是什么&#34;在这个表中应该代表什么?这个表中的列应该代表什么?然后弄清楚如何在任何给定的迭代中计算表中使用(但不更改)行值(月)和列值(i)的数字。
编辑:再一次,我可能会错误地处理数学,但我自己搞砸了,并意识到你的表中实际上没有任何列:它只有行(==月)。因此,您只需要一个循环来迭代几个月,其余的只是一个计算来弄清楚。看看这个,看看这是否是您正在寻找的:double currentLoan = initialLoan;
for(int row = 1; row <= 12; row++) {
//calculate monthly balance
currentLoan = (currentLoan-monthlyPayment)*(1+percentMonthlyRate);
System.out.println(" " + row + "\t" + currentLoan);
}