拿捏--->打印爱心(小心机表白)

文章目录

  • 题目描述
  • 算法思路+代码示例
    • 思路一
    • 思路二

题目描述

利用java语言编写算法在控制台打印爱心算法

算法思路+代码示例

思路一

打印心形主要分为上下两部分,如图:
拿捏--->打印爱心(小心机表白)_第1张图片

下边主要是一个倒立三角形,容易打印。
上边可以分为左右两部分,左边的也好打印,也是类似与三角形。控制好右边的空格则就解决了问题,因为他们是控制在同一层,把一行所有的星号输出完毕,再换行。


public class lave {

	public static void main(String[] args) {
		
		int i,j,k;//i层数 j空格 k星号
		
		for(i=0;i<2;i++) {
		//控制左边的星号打印
			for(j=0;j<=2-i;j++) {
				System.out.print(" ");
			}
			for(k=0;k<2*i+4;k++) {
				System.out.print("*");
			}
    
			//控制右边的星号打印
			for(j=4;j>2*i;j--) {
				System.out.print(" ");
			}
			for(k=0;k<2*i+4;k++) {
				System.out.print("*");
			}
			//执行换行
			System.out.println();
		}
		//下边是倒立三角形
		for(i=0;i<8;i++) {
			for(j=0;j<=i;j++) {
				System.out.print(" ");
			}
			for(k=0;k<16-i*2;k++) {
				System.out.print("*");
			}
			System.out.println();			
		}
		

	}

}

结果展示:

拿捏--->打印爱心(小心机表白)_第2张图片

思路二

思路一中打印的爱心比较僵硬,我们可以试着打印一个比较圆润的爱心以达到更美观的效果。如下:


public class Love {
public static void main(String[] args) {
	/*
	 * 打印心形
	 */
	 int n = 4;
     int i, j, m;
     for (i = 1; i <= n; i++) {
         for (j = 1; j <= 2 * (n - i) - 1; j++) {
             System.out.print(" ");
         }
         for (j = 1; j <= 6 + (10 - i) * (i - 1) / 2; j++) {
             System.out.print("*");
         }
         for (j = 1; j <= 2 * n - 1 + (i - 6) * (i - 1); j++) {
             if (i == n)
                 break;
             System.out.print(" ");
         }
         for (j = 1; j <= 6 + (10 - i) * (i - 1) / 2; j++) {
             if (i == n)
                 break;
             System.out.print("*");
         }
         if (i == n) {
             for (j = 1; j <= 6 + (10 - i) * (i - 1) / 2 - 1; j++) {
                 System.out.print("*");
             }
         }
         System.out.println("");
     } // 上面部分
     for (i = 1; i <= n - 2; i++) {
         for (j = 1; j <= 6 + (10 - n) * (n - 1) / 2 - 1 + 6 + (10 - n) * (n - 1) / 2; j++) {
             System.out.print("*");
         }
         System.out.println("");
     } // 中间部分
     m = 6 + (10 - n) * (n - 1) / 2 + 6 + (10 - n) * (n - 1) / 2 - 1;
     for (i = 1; i <= (m - 2 - 3) / 4 + 1; i++) {
         for (j = 1; j <= 2 * i - 1; j++) {
             System.out.print(" ");
         }
         for (j = 1; j <= m + 2 - 4 * i; j++) {
             System.out.print("*");
         }
         System.out.println("");
     }
     for (j = 1; j <= 2 * ((m - 2 - 3) / 4 + 1); j++)

     {
         System.out.print(" ");
     }
     System.out.println("*");// 下面部分
     System.out.println("                             我喜欢你");
	}
}

结果展示:

拿捏--->打印爱心(小心机表白)_第3张图片

你可能感兴趣的:(JavaEE初阶,java)