博客 / 詳情

返回

Java輸出形狀

輸出矩形

以此矩形案例(4行,9列的矩形)為例

public static void main(String[] args) {
        //輸出矩形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            for (int j = 1; j <= 9; j++) {//控制輸出的*的個數,每行9個
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果
*********
*********
*********
*********

前面有空格的矩形

以此矩形案例(4行,9列的矩形)為例

public static void main(String[] args) {
        //輸出前面有空格矩形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            //輸出空格
            for (int k = 1; k <= 5; k++) {//控制空格,即每行開始輸出5個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 9; j++) {//控制輸出的*的個數,每行9個
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果
     *********
     *********
     *********
     *********

輸出平行四邊形

以此矩形案例(4行,9列的矩形)為例,要變成平行四邊形

  • 第一行前面輸出8個空格
  • 第二行前面輸出7個空格
  • 第三行前面輸出6個空格
  • 第四行前面輸出5個空格
        ********* 1 8
       ********* 2 7
      ********* 3 6
     ********* 4 5

綜上所述,得出規律:行數+空格數=9

public static void main(String[] args) {
        //輸出平行四邊形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            //輸出空格
            for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 5; j++) {//控制輸出的*的個數,每行5個
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果:
        *****
       *****
      *****
     *****

輸出三角形

以此案例(4行)為例,要變成三角形

  • 第一行前面輸出8個空格,1個星
  • 第二行前面輸出7個空格,3個星
  • 第三行前面輸出6個空格,5個星
  • 第四行前面輸出5個空格,7個星
        * 1 8 1
       *** 2 7 3
      ***** 3 6 5
     ******* 4 5 7

綜上所述,得出規律:行數+空格數=9,2x行數-1=星的個數

public static void main(String[] args) {
        //輸出三角形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            //輸出空格
            for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果:
        *
       ***
      *****
     *******

輸出菱形

此案例由上面三角形(4行)和下面倒三角形(3行)組合,變成菱形

上面三角形

  • 第一行前面輸出8個空格,1個星
  • 第二行前面輸出7個空格,3個星
  • 第三行前面輸出6個空格,5個星
  • 第四行前面輸出5個空格,7個星

下面倒三角形

  • 第一行前面輸出6個空格,5個星
  • 第二行前面輸出7個空格,3個星
  • 第三行前面輸出8個空格,1個星

          * 1 8 1
         *** 2 7 3
        ***** 3 6 5
       ******* 4 5 7
        *****   1 6 5
         ***     2 7 3
          *       3 8 1

綜上所述,得出規律:上面三角形,行數+空格數=9,2x行數-1=星的個數;下面倒三角形,行數+5=空格數,7-2x行數=星的個數

public static void main(String[] args) {
        //輸出上面三角形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            //輸出空格
            for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
                System.out.print("*");
            }
            //換行
            System.out.println();
        }

        //輸出下面倒三角形
        for (int i = 1; i <= 3; i++) {//控制行,即3行
            //輸出空格
            for (int k = 1; k <= i + 5; k++) {//控制空格,行數+5=空格數,即每行開始輸出i+5個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 7 - 2 * i; j++) {//控制輸出的*的個數,7-2x行數=星的個數,即每行7 - 2 * i個星
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果:
        *
       ***
      *****
     *******
      *****
       ***
        *

輸出空心菱形

此案例由上面三角形(4行)和下面倒三角形(3行)組合,變成菱形,中間星形由空格代替

        * 
       * * 
      *   * 
     *     * 
      *   *   
       * *     
        *       

得出規律:在輸出星的地方,每行第一個和最後一個輸出星,其餘輸出空格

 public static void main(String[] args) {
        //輸出上面三角形
        for (int i = 1; i <= 4; i++) {//控制行,即4行
            //輸出空格
            for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
                //在首和尾輸出星,其餘輸出空格
                if (j == 1 || j == 2 * i - 1) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //換行
            System.out.println();
        }

        //輸出下面倒三角形
        for (int i = 1; i <= 3; i++) {//控制行,即3行
            //輸出空格
            for (int k = 1; k <= i + 5; k++) {//控制空格,行數+5=空格數,即每行開始輸出i+5個空格
                System.out.print(" ");
            }
            for (int j = 1; j <= 7 - 2 * i; j++) {//控制輸出的*的個數,7-2x行數=星的個數,即每行7 - 2 * i個星
                //在首和尾輸出星,其餘輸出空格
                if (j == 1 || j == 7 - 2 * i) {
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //換行
            System.out.println();
        }
    }

//輸出結果:
        *
       * *
      *   *
     *     *
      *   *
       * *
        *

輸出正方形

以此案例(5行,5列的正方形)為例

public static void main(String[] args) {
        //輸出正方形
        int len = 5;//正方形邊長
        for (int i = 1; i <= len; i++) {//控制行,即4行
            for (int j = 1; j <= len; j++) {//輸出星,即每行輸出j個星
                System.out.print("*");
            }
            //換行
            System.out.println();
        }
    }

//輸出結果:
*****
*****
*****
*****
*****

輸出實心菱形

以此案例(5行,5列)為例

  • 第一行第一個和最後一個星的位置是3和3
  • 第二行第一個和最後一個星的位置是2和4
  • 第三行第一個和最後一個星的位置是1和5
  • 第四行第一個和最後一個星的位置是2和4
  • 第五行第一個和最後一個星的位置是3和3
  *  1 3 3
 ***  2 2 4
*****  3 1 5
 ***    4 2 4 
  *      5 3 3 
public static void main(String[] args) {
        //輸出實心菱形
        int len = 5;//邊長
        int first = len / 2 + 1;//開始輸出星的位置
        int end = len / 2 + 1;//結束輸出星的位置
        boolean flag = true;//如果是上半部三角形則是true,如果是下半倒三角形則是false

        for (int i = 1; i <= len; i++) {//控制行,即4行
            for (int j = 1; j <= len; j++) {//輸出星,即每行輸出j個星
                if (j >= first && j <= end) {//在每行的起始至結束位置輸出星
                    System.out.print("*");
                } else {
                    System.out.print(" ");
                }
            }
            //換行
            System.out.println();

            if(end == len){//最後一個星位置是邊長寬度
                flag = false;//下一行,馬上執行下半部倒三角形
            }

            if(flag){
                //在上半三角形,開始輸出星的位置first前移1,結束輸出星的位置end後移1
                first--;
                end++;
            }else {
                //在下半倒三角形,開始輸出星的位置first後移1,結束輸出星的位置end前移1
                first++;
                end--;
            }
        }
    }

//輸出結果:
  *  
 *** 
*****
 *** 
  *  

如果想輸出空心菱形則只需要將:

if (j >= first && j <= end)

改成

if (j == first || j == end)
user avatar eisuto 頭像 yadong_zhang 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.