文章目录
- 题目描述
- 算法思路+代码示例
- 思路一
- 思路二
题目描述
利用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(" 我喜欢你");
}
}
结果展示: