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