Java Amortization类中calcPayment方法无法识别loan变量
问题解决
- 核心问题:构造函数的参数
loan是局部变量,仅在构造函数内部有效,calcPayment方法无法访问这个局部变量。 - 解决方案:你已经在构造函数中将
loan的值赋值给了实例变量loanAmount,且需求要求保留该变量,直接在calcPayment里用loanAmount替代loan即可。 - 额外提醒:构造函数里还没给
interestRate赋值,记得把参数rate赋值给它,否则计算时interestRate会默认是0,导致结果错误。
修改后的代码:
import java.io.*; import java.text.DecimalFormat; public class Amortization { private double loanAmount; // holds the amount of the loan private double interestRate; // holds the interest rate private double loanBalance; // holds the monthly balance private double term; // utilized in order to calculate the monthly payments private double payment; // holds the cash amount of the monthly payments private int loanYears; // holds the number of years in the loan public Amortization(double loan, double rate, int years) { loanAmount = loan; loanBalance = loan; loanYears = years; interestRate = rate; // 补上这行,给interestRate赋值 calcPayment(); } private void calcPayment() { term = Math.pow((1+interestRate/12),(loanYears*12)); payment = (loanAmount * (interestRate/12) * term)/(term - 1); // 把loan换成loanAmount } }
内容的提问来源于stack exchange,提问作者mvodeja
相关产品推荐
相关产品推荐

