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循环条件就是第一个的对称,如图所示:

然后再打印第三个三角形,如图所示(因为前面两个循环注释掉了,所以这个三角形的实际位置应该是在前面两个三角形的右边):

最后的整体效果如图:

posted @   萤蝶  阅读(1478)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示