for循環打印三角形的兩種方法


打印一個5行三角形

方法一:

public class TestDemo01 {

    public static void main(String[] args) {

        int outLeft = 5;
        int outRight = 5;

        for (int row = 0; row < 5; row++) {

            for (int i = 1; i <= 9; i++) {
                if (i >= outLeft && i <= outRight) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }

            --outLeft;
            ++outRight;

            System.out.println();

        }

    }

}

我的思路是先在excel里畫了一個三角形,然后知道了每行分別應該打印多少的星號多少的空格。如圖所示:

所以可以看到每行分別應該打印1、3、5、7、9個*號。
然后從中間的第5個字符位置開始向左右打印星號,其他的字符位置打印空格。
最后效果如圖:

方法二:

public class TestDemo02 {

    public static void main(String[] args) {

        for (int i = 0; i < 5; i++) {
            for (int j = 5; j > i; j--) {
                System.out.print(" ");
            }
            for (int j = 0; j <= i; j++) {
                System.out.print("*");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }

            System.out.println();

        }

    }

}

方法二的思路是:設想要打印的三角形是在一個正方形中剪切出來的。
如圖,里層第一個for循環先打印這個三角形(實際應該打印空格):

然后打印第二個三角形,這個三角形其實就是第一個三角形的中心對稱,因此里層第二個for循環條件就是第一個的對稱,如圖所示:

然后再打印第三個三角形,如圖所示(因為前面兩個循環注釋掉了,所以這個三角形的實際位置應該是在前面兩個三角形的右邊):

最后的整體效果如圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM