java常见练习题之打印菱形

要求在控制台打印出如下图形:
在这里插入图片描述

分析:可以将上面的图形分成两个部分,一部分为朝上的等腰三角形,一部分为朝下的等腰三角形,分成两个部分最后一拼接即为所求菱形

开始:

第一部分:朝上的等腰三角形

我们将上面5层拿出来当做朝上等腰三角形,即:

//上面5行
		for (int i = 1; i <= 5; i++) {
	    }

外层代码用此代码控制行数
其次我们会发现等腰三角形是空白部分和*所构成,所以我们分为两小步实现,第一步打印其空白部分,即:

//i=1,空格=4
			//i=2,空格=3
			//i=3,空格=2
			for (int j = 1; j <= 5 - i; j++) {
				System.out.print(" ");
			}

将其写入外层for循环内部,空白部分填充完毕后填充*部分,即:

//i=1,*=1
			//i=2,*=3
			//i=3,*=5
			for (int j = 1; j <= 2 * i - 1; j++) {
				System.out.print("*");
			}

记得在最后加上System.out.println();换行;
此部分代码也在外层for循环内,在空白部分循环后面,这样就实现了菱形的上半部分,打印在控制平台显示为:

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

第二部分:朝下的等腰三角形
按照上面的思路,继续分析菱形的下半部分,同理

我们将下面4层拿出来当做朝下等腰三角形,即:

//下面4行
		for (int i = 1; i <= 4; i++) {
		}

同理外层代码用此代码控制行数
一样我们会发现等腰三角形是空白部分和*所构成,所以我们分为两小步实现,第一步打印其空白部分,即:

//i=1,空格=1
			//i=2,空格=2
			//i=3,空格=3
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}

将其写入外层for循环内部,空白部分填充完毕后填充*部分,即:

//i=1,*=7    
			//i=2,*=5   
			//i=3,*=3   
			for (int j = 1; j <= (5 - i) * 2 - 1; j++) {
				System.out.print("*");
			}

记得在最后加上System.out.println();换行;
此部分代码也在外层for循环内,在空白部分循环后面,这样就实现了菱形的下半部分,打印在控制平台显示为:

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

我们将其合并,最终代码为:

public class 菱形 {
	public static void main(String[] args) {
		//上面5行
		for (int i = 1; i <= 5; i++) {
			//i=1,空格=4
			//i=2,空格=3
			//i=3,空格=2
			for (int j = 1; j <= 5 - i; j++) {
				System.out.print(" ");
			}
			//i=1,*=1
			//i=2,*=3
			//i=3,*=5
			for (int j = 1; j <= 2 * i - 1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		//下面4行
		for (int i = 1; i <= 4; i++) {
			//i=1,空格=1
			//i=2,空格=2
			//i=3,空格=3
			for (int j = 1; j <= i; j++) {
				System.out.print(" ");
			}
			//i=1,*=7    
			//i=2,*=5   
			//i=3,*=3   
			for (int j = 1; j <= (5 - i) * 2 - 1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}

在控制台表现为:

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

实现菱形,此题让初学者学会分步思考,一步步完成问题,学会分析后做题,加油!

你可能感兴趣的:(java基础)