Java分期摊销代码输出还款信息倒序 贷款余额未从上到下递减
问题根因
你输出的还款记录余额顺序异常,核心原因是参与计算的贷款初始余额未赋值:Amortization构造方法中仅给总贷款额loanAmount做了赋值,但每期余额计算用到的成员变量loanBalance没有被初始化为总贷款额,Java中double类型成员变量的默认初始值为0.0,直接代入计算会导致余额为负、递减逻辑完全错误,看起来像是倒序输出。
修复方案
在saveReport方法的循环执行前,添加一行初始化loanBalance的代码即可实现余额逐行递减的效果:
public void saveReport(String loanFile) throws IOException{ double monthlyInterest; double principal; // 新增这行代码,初始化当前贷款余额为总贷款额 loanBalance = loanAmount; File file = new File("LoanReport.txt"); // 后续原有代码保持不变
其他问题修复建议
saveReport方法定义了传入参数String loanFile用于指定输出文件路径,但实际代码写死了固定文件名LoanReport.txt,没有用到传入的参数,如果你需要动态指定输出文件,可修改为File file = new File(loanFile);- 类中定义的
Scanner keyboard成员变量全程未使用,可以直接删除减少冗余 - 建议使用try-with-resources语法自动管理
PrintWriter的关闭,避免异常场景下出现资源泄漏,示例如下:// 替代原来的FileWriter、PrintWriter创建和手动close的逻辑 try(PrintWriter outputFile = new PrintWriter(new FileWriter("LoanReport.txt"))){ // 原有所有写入文件的逻辑放到此处即可 } - 最后一期还款逻辑修改了全局的
payment变量值,如果你后续还有其他逻辑用到月还款额变量,会出现数值错误,建议改为用临时变量存储最后一期的还款额,不要修改全局变量。
内容的提问来源于stack exchange,提问作者FormerCurrentFuture
相关产品推荐
相关产品推荐

