利用For循环打印三角形:

 方法一:

package com.zctou.structure;

public class TestDemo02 {
    public static void main(String[] args) {
        // 用5行打印三角开明形
        //分析:把要输出的三角形拆分成3份“半三角”,先是一个“倒三角”,现来两个“正三角”即可。
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print("-"); //输出倒三角
            }
            for (int k = 1; k <= i; k++) {
                System.out.print("*");//跟着上面输出正三角
            }
            for (int l = 1; l < i; l++) {
                System.out.print("*");//跟着上面输出正三角,但第一个*不用输出
            }
            for (int m = 5; m >= i; m--) {
                System.out.print("-"); //输出倒三角,完成一个四边形
            }
            System.out.println();
        }

    }
}

输出:

-----*-----
----***----
---*****---
--*******--
-*********-
可以看到,这种打印思路就是把三角形拆分,分别用for循环打印每个小部件即可。

方法二:

package com.zctou.structure;

public class TestDemo01 {
    public static void main(String[] args) {
        //打印三角形
        int line = 5; //定义要打印三角所要用到的行数
        for (int i = 1; i <= line; i++) {
            for(int j = 1; j<=line+(line-1); j++) { //控制每行要打印的总个数:line+(line-1)
                if(j>line-i && j<line+i) { // 每行输出*的位置
                    System.out.print("*");
                } else {
                    System.out.print("-");
                }
            }
            System.out.println(" ");
        }
    }
}

输出:

----*---- 
---***--- 
--*****-- 
-*******- 
********* 

经观察发现:

  1. 第n行与n-1行的星星数相差2
  2. 第n行的星星数为n+(n-1),所以像打印九九乘法表一样,要打印三角形,至少用到2个for循环嵌套。一个控制行数,一个控制每行输出的星星数(列)。
  3. 第一行肯定是取中间数,也就是line的值。
文章目录