Java输出菱形图案

时间:2025-04-06 14:11:29

打印如下的图形:菱形
         * 
        * * 
       * * * 
      * * * * 
     * * * * * 
      * * * * 
       * * * 
        * * 
         * 

这里有几种解法:

从图形中可以看出,“*”中间有空格隔开,且各行开头处可以有逐级减少的空格。“*”与空格可以视为一个整体

 1.只有for循环

可以选择用两个for循环分别控制空格与“ *”的输出。在这两个循环体外还需一个循环体用以控制输出的次数。其中内部两个循环体的判断条件可以与最外层关联。

package ;

public class Main {

    public static void main(String[] args) {
        for (int i=1;i<=5;i++){
            for (int j=5-i;j>0;j--) {
                (" ");
            }
            for (int m=0;m<i;m++) {
                (" *");
            }
            (" ");
        }
        for (int i=1;i<=5;i++){
            for (int j=i;j>0;j--) {
                (" ");
            }
            for (int m=5;m>i;m--) {
                (" *");
            }
            (" ");
        }
        }
    }

2.数组与for循环连用

由图可以看出“*”的输出很有规律,因此可以选择添加一个数组,对其中的数据进行%处理,再进行for循环操作。

package ;

public class Main {

    public static void star(int[] a, int b) {
        for (int i = 0; i < ; i++) {
            if (a[i] % 2 == 1) {
                ("*");
            } else {
                (" ");
            }
            a[i] = a[i] + b;
        }
        (" ");
    }

    public static void main(String[] args) {
        int[] arr = {-3, -2, -1, 0, 1, 0, -1, -2, -3};
        for (int i = 0; i < 5; i++) {
            star(arr, 1);
        }
        int[] arr1 = {0, 1, 2, 3, 4, 3, 2, 1, 0};
        for (int i = 0; i < 4; i++) {
            star(arr1, -1);
        }
    }
}