文章目录
- 题目描述
- 算法思路+代码示例
- 思路一
- 思路二
题目描述
利用java语言编写算法在控制台打印爱心算法
算法思路+代码示例
思路一
打印心形主要分为上下两部分,如图:
下边主要是一个倒立三角形,容易打印。
上边可以分为左右两部分,左边的也好打印,也是类似与三角形。控制好右边的空格则就解决了问题,因为他们是控制在同一层,把一行所有的星号输出完毕,再换行。
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(); }}}
结果展示:
思路二
思路一中打印的爱心比较僵硬,我们可以试着打印一个比较圆润的爱心以达到更美观的效果。如下:
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(" 我喜欢你");}
}
结果展示: