打印如下的图形:菱形
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
这里有几种解法:
从图形中可以看出,“*”中间有空格隔开,且各行开头处可以有逐级减少的空格。“*”与空格可以视为一个整体
1.只有for循环
可以选择用两个for循环分别控制空格与“*”的输出。在这两个循环体外还需一个循环体用以控制输出的次数。其中内部两个循环体的判断条件可以与最外层关联。
package pany;public class Main {public static void main(String[] args) {for (int i=1;i<=5;i++){for (int j=5-i;j>0;j--) {System.out.print(" ");}for (int m=0;m<i;m++) {System.out.print(" *");}System.out.println(" ");}for (int i=1;i<=5;i++){for (int j=i;j>0;j--) {System.out.print(" ");}for (int m=5;m>i;m--) {System.out.print(" *");}System.out.println(" ");}}}
2.数组与for循环连用
由图可以看出“*”的输出很有规律,因此可以选择添加一个数组,对其中的数据进行%处理,再进行for循环操作。
package pany;public class Main {public static void star(int[] a, int b) {for (int i = 0; i < a.length; i++) {if (a[i] % 2 == 1) {System.out.print("*");} else {System.out.print(" ");}a[i] = a[i] + b;}System.out.println(" ");}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);}}}