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

如何让Java嵌套for循环内层输出值水平打印完成后再换行

问题根因

你当前每个还款额单独换行输出,是因为内层循环的printf语句中携带了换行符%n,每次打印完单条还款额就会触发换行,不符合你同一行输出所有当前利率对应还款额的需求。

解决方案

修改两处代码即可:

  • 删除内层printf中的换行符%n,保证所有还款额连续在同一行输出
  • 在内层循环完全执行结束后,统一执行一次换行操作,给下一轮外层循环的利率输出让出下一行

修改后的核心代码

public class Printer {

    public static void main(String[] args) {

        // 外层循环:遍历利率范围4.000%~6.000%,步长0.250%
        for (double i=4.000; i<=6.000; i+=0.250){
            // 打印当前利率,末尾加空格和后续还款额做分隔
            System.out.printf("%.3f ", i);
            // 内层循环:遍历贷款年限15/20/25/30年
            for (int j=15; j<=30; j+=5){
                double payments = paymentCalculator(j, i);
                // 仅格式化输出还款额,不添加换行符
                System.out.printf("%10.2f", payments);
            }
            // 内层循环全部执行完成后统一换行
            System.out.println();
        }
    }

    // 保留原有paymentCalculator方法逻辑不变即可
    /*public static double paymentCalculator(int years, double annualRate){
        annualRate = annualRate / 100;
        double mir = annualRate / 12;
        double mtp = years * 12;
        double numerator = (Math.pow((1+mir), mtp) * mir);
        double denominator = (Math.pow((1+mir), mtp) - 1);
        double annuityFactor = numerator / denominator;
        double payment = 100000 * annuityFactor;
        return payment;
    }*/
}

格式优化提示

如果需要调整列对齐效果,可以自行调整printf中的字段宽度参数,比如把%10.2f改成%12.2f增加列间距,适配你的控制台显示效果。

内容的提问来源于stack exchange,提问作者Danny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:36:00