C++通过for循环实现贷款统计表列数据同行对齐
问题根因
原代码outputStatistics方法里写了两个完全独立的for循环:
- 第一个循环逐行输出月份序号,每输出一个月份就直接换行
- 第二个循环逐行输出月供金额,每输出一个月供就直接换行
两个循环先后执行,导致月份列和月供列被拆成上下两个独立块,无法在同一行对齐。另外原第二个循环从j=0开始计数,会比实际月份数多输出一行月供数据。
修改方法
不需要调整输出为横向布局,也不需要改动原有类继承关系、输入逻辑、利息/月供计算逻辑,只需要把两个独立循环合并为单个循环即可:每轮循环里依次输出当前行的月份、制表分隔符、月供金额,最后再换行,完全符合用for循环批量输出的需求。
修改后的核心代码
仅需要替换outputStatistics方法的实现即可,其余代码完全保留:
void outputStatistics() { cout<<"Month\tPayment(RM)\tPrincipal(RM)\tInterest(RM)\tBalance(RM)\n"; for(int i = 1; i <= month; i++) { // 同一行内输出当前行所有列数据,最后再换行 cout << i << "\t" << month_payment << endl; } }
补充说明
- 输出时用
\t制表符分隔列,和原有表头的分隔规则保持一致,可自动实现列对齐 - 循环范围和总月份数完全匹配,修复了原代码多输出一行月供的bug
- 后续需要补充Principal、Interest、Balance列的计算值时,只需要在当前循环的
cout语句中按顺序追加\t和对应变量即可,不需要调整整体循环结构
内容的提问来源于stack exchange,提问作者CPP_is_no_STANDARD
相关产品推荐
相关产品推荐

