Java打印正倒双三角形程序第二个三角形右偏原因及修复方法
Bug产生原因
- 倒三角模块的前缀空格逻辑错误:代码将下一行的前缀空格放在当前行打印完成后输出,循环条件
k <= i会导致每次多打印1个空格。倒三角全部打印完成后,最后一次额外输出的空格直接留在正三角首行开头,导致正三角整体初始多了1位缩进。 - 正三角模块的空格递推逻辑错误:正三角每行星号前的空格需要逐行递减1个,原代码使用步长为2的循环
k-=2计算空格数量,不符合对齐要求,进一步加剧偏移问题。
修复方案
仅需要修改两处空格打印的循环逻辑即可:
- 倒三角部分的空格循环将判断条件从
k <= i改为k < i,消除多余的前置空格 - 正三角部分的空格循环修改为步长为1的递减逻辑,保证空格数逐行减1
修复后完整代码
public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Enter number"); int num = s.nextInt(); for (int i = 0; i < num; i++) { for (int j = num; j > i; j--) { System.out.print("*"); System.out.print(" "); } System.out.println(); // 此处修改循环条件 for (int k = 0; k < i; k++) { System.out.print(" "); } } // second part for (int i = 0; i < num; i++) { for (int j = 0; j <= i; j++) { System.out.print("*"); System.out.print(" "); } System.out.println(); // 此处修改空格循环逻辑 for (int k = num -1; k > i; k--) { System.out.print(" "); } } }
修复后输出示例(num=3)
* * * * * * * * * * * *
内容的提问来源于stack exchange,提问作者dudex198
相关产品推荐
相关产品推荐

