由于我已经知道我需要的菱形是什么样,所以我的思路是把菱形分为上下两部分先打印上半部分,再打印下半部分;
实心菱形:
第一个for循环限定菱形的行数,第二个for循环限定打印空格,第三个for循环打印*,
下半部分行数减1,行数依次递减输出即可。
空心菱形:
只需要打印边界的*,所以在实心菱形基础上用if-else 语句判断是否为边界,是则打印*否则打印空格输出即可。
这样说有些抽象,看以下代码注释即可理解:
package Java2;/*** @description:* @Author: my.yang* @Date: 2022/10/29 20:31*/
public class Test6 {/*** 行号i(已知) 空白j(未知) *数z(未知)* * 1 3 1* *** 2 2 3* ***** 3 1 5* ******* 4 0 7* 上半部分 空白=行数-行号 *数=2*行号-1* ****** **** **/public static void main(String[] args) {System.out.println("---实心菱形---");//上半部分//外层for循环 i是行号for (int i = 1; i <= 4; i++) {//打印空格for (int j = 1; j <= 4 - i; j++) {System.out.print(" ");}//打印*for (int z = 1; z <= 2 * i - 1; z++) {System.out.print("*");}//换行System.out.println();}//下半部分//外层for循环 i是行号for (int i =3; i >= 1; i--) {//打印空格for (int j = 1; j <= 4 - i; j++) {System.out.print(" ");}//打印*for (int z = 1; z <= 2 * i - 1; z++) {System.out.print("*");}//换行System.out.println();}System.out.println("---空心菱形---");//上半部分//外层for循环 i是行号for (int i = 1; i <= 4; i++) {//打印空格for (int j = 1; j <= 4 - i; j++) {System.out.print(" ");}// 边界打印* 其他打印空格即可for (int z = 1; z <= (2 * i - 1); z++) {//两边的1与最大值为边界打印*if (z==1||z==2*i-1){System.out.print("*");}//不是边界打印空格else {System.out.print(" ");}}//换行System.out.println();}//下半部分//外层for循环 i是行号for (int i =3; i >= 1; i--) {//打印空格for (int j = 1; j <= 4 - i; j++) {System.out.print(" ");}//打印*for (int z = 1; z <= 2 * i - 1; z++) {//两边的1与最大值为边界打印*if (z==1||z==2*i-1){System.out.print("*");}//不是边界打印空格else {System.out.print(" ");}}//换行System.out.println();}}
}
一起看看结果吧:
注:新手小白,有不妥请温柔指正,拴扣!