如何让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
相关产品推荐
相关产品推荐

