-1

基本上我必须打印 2 个 traingles,顶部倒置,底部一个倒置。它们的长度相同,我的程序运行良好,但由于某种原因,我的第二个三角形略微向右倾斜。谁能向我解释如何修复以及为什么会发生此错误?

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; k>i; k-=2) {
                System.out.print(" ");
            }
        }
    }
}

* * * 
 * * 
  * 
   * 
  * * 
 * * * 
4

1 回答 1

0

几个小调整:

  • 在第一个外部 for 循环的末尾
  • 在最后的第二个外部 for 循环中

请参阅下面的代码注释

        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++) { // stop condition changed
                System.out.print(" ");
            }
            if (i < num -1) { // this was added
                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+1; k-=1) { // stop condition change
                System.out.print(" ");
            }
        }
于 2021-11-28T15:12:15.500 回答