You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:36:03