Java列印菱形星圖案程式


在本文中,我們將學習如何使用Java列印菱形星圖案。該圖案是透過使用多個for迴圈和列印語句形成的。

輸出

以下是菱形星圖案的演示:

The diamond star pattern :
       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

不同的方法

以下是列印菱形星圖案的不同方法:

使用使用者自定義輸入

以下是列印菱形星圖案的步驟:

  • 匯入Scanner類
  • 宣告變數i、j、k和my_input
  • 建立一個Scanner物件來讀取使用者輸入。
  • 提示使用者輸入圖案大小的數字。
  • 將k設定為my_input - 1。
  • 使用巢狀for迴圈列印菱形上半部分的空格和星號。
  • 每行之後列印一個新行。
  • 調整k並使用巢狀for迴圈列印菱形的下半部分。
  • 結束程式。

示例

這裡,輸入是根據提示由使用者輸入的:

import java.util.Scanner;
public class DiamondStar{
   public static void main(String args[]){
      int i, j, k, my_input;
      System.out.println("Required packages have been imported");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.print("Enter the number : ");
      my_input = my_scanner.nextInt();
      k = my_input - 1;
      System.out.println("The diamond star pattern : ");
      for (j = 1; j<= my_input; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k--;
         for (i = 1; i <= 2 * j - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
      k = 1;
      for (j = 1; j<= my_input - 1; j++){
         for (i = 1; i<= k; i++){
            System.out.print(" ");
         }
         k++;
         for (i = 1; i<= 2 * (my_input - j) - 1; i++){
            System.out.print("*");
         }
         System.out.println("");
      }
   }
}

輸出

Required packages have been imported
A reader object has been defined
Enter the number : 8
The diamond star pattern :
        *
       ***
      *****
     *******
    *********
   ***********
  *************
 ***************
  *************
   ***********
    *********
     *******
      *****
       ***
        *

使用遞迴

以下是使用遞迴列印菱形星圖案的步驟:

  • 首先,我們將匯入Scanner類
  • 提示使用者輸入菱形上半部分的行數 (n)。
  • 列印菱形上半部分我們將使用遞迴方法 (printUpperDiamond),對於基本條件,當currentRow超過n時我們將停止。
  • 要列印空格,我們將使用一個輔助函式來列印n - currentRow個空格,要列印星號,我們將使用另一個輔助函式來列印2 * currentRow - 1個星號。
  • 我們將再次呼叫該方法,使用 currentRow + 1  來處理下一行。
  • 要列印菱形下半部分我們將使用遞迴方法 (printLowerDiamond),對於基本條件,當n變為0時我們將停止。
  • 要列印空格,我們將使用一個輔助函式來列印currentRow個空格,要列印星號,我們將使用另一個輔助函式來列印2 * n - 1個星號。
  • 我們將再次呼叫該方法,使用n - 1currentRow + 1來處理下一行。
  • 輔助函式列印空格,而printStars將遞迴地列印指定數量的星號。

示例

這裡,整數之前已定義,其值將在控制檯上訪問和顯示。

import java.util.Scanner;

public class DiamondStar {
    public static void main(String[] args) {
        // Scanner to take input from the user
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the number of rows for the diamond: ");
        int n = scanner.nextInt();
        
        // Print the upper part of the diamond
        printUpperDiamond(n, 1);
        
        // Print the lower part of the diamond
        printLowerDiamond(n - 1, 1);
    }

    // Method to print the upper part of the diamond
    static void printUpperDiamond(int n, int currentRow) {
        if (currentRow > n) {
            return;
        }
        printSpaces(n - currentRow);
        printStars(2 * currentRow - 1);
        System.out.println();
        printUpperDiamond(n, currentRow + 1);
    }

    // Method to print the lower part of the diamond
    static void printLowerDiamond(int n, int currentRow) {
        if (n == 0) {
            return;
        }
        printSpaces(currentRow);
        printStars(2 * n - 1);
        System.out.println();
        printLowerDiamond(n - 1, currentRow + 1);
    }

    // Helper method to print spaces
    static void printSpaces(int count) {
        if (count == 0) {
            return;
        }
        System.out.print(" ");
        printSpaces(count - 1);
    }

    // Helper method to print stars
    static void printStars(int count) {
        if (count == 0) {
            return;
        }
        System.out.print("*");
        printStars(count - 1);
    }
}

輸出

The number of rows is defined as 8
The diamond star pattern :
       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *

上述程式的時間和空間複雜度為:

時間複雜度:O(n²)

空間複雜度:O(n)

Alshifa Hasnain
Alshifa Hasnain

將程式碼轉化為清晰易懂的表達

更新於:2024年9月13日

861 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告