java实现心形图案|桃心_程序员的浪漫--java打印心形图案

本文展示了如何使用Java编程语言绘制不同样式的心形图案,包括单心、双心以及带有点缀的双心。通过数学方程式确定心形轮廓,并在代码中实现。程序在IntelliJ IDEA中运行正常,但在其他IDE或命令行环境下可能需要调整。
摘要由CSDN通过智能技术生成

原标题:程序员的浪漫--java打印心形图案

谁说程序员不能浪漫

单纯的心

双心

加些点缀

代码所用方程:

心:((0.05*x)^2 + (0.1*y)^2-1)^3-(0.05*x)^2 * (0.1*y)^3 < = 0

箭:4*y-x == 0

原理:根据方程,打印出空格或者文字

注意:

本程序使用idea编写时打印,如果用其他ide或者命令行中可能会变形

使用中根据汉字或者英文需要进行微调

代码不够简洁,抱歉

代码:

public static void main(String[] args) {

//单心

heart(15,0.9,"love");

//双心

heartTwo(15,0.9,"爱","梁山伯","祝英台");

//点缀

heartTwoWithXK(15,0.9,"爱","梁山伯","祝英台");

}

private static void heart(int r,double size,String req){

size=1/(1.5*r*size);

StringBuilder sb=new StringBuilder();

for (int y = r; y > -r; y--,sb.append("\n"))

for (int x = -2*r; x < 2*r; x++ ) {

char msg=(req + req).charAt((x - y) % req.length() + req.length());

sb.append((inHeart(size,x,y)?msg+ " " : " "));

}

System.err.println(sb.toString());

}

private static void heartTwo(int r,double size,String center,String left,String right){

size=1/(1.5*r*size);

StringBuilder sb=new StringBuilder();

for (int y = r; y > -r; y--,sb.append("\n"))

for (int x = -2*r; x <4*r; x++ ) {

boolean isLeft=inHeart(size,x,y);

boolean isRight=inHeart(size,x-25,y-3);

//双空格

String req=null;

if(isLeft && isRight) req=center;

else if(isLeft) req=left;

else if (isRight) req=right;

if(req!=null) sb.append((req + req).charAt((x - y) % req.length() + req.length()));

else sb.append(" ");//双空格

}

System.err.println(sb.toString());

}

private static void heartTwoWithXK(int r,double size,String center,String left,String right){

size=1/(1.5*r*size);

StringBuilder sb=new StringBuilder();

for (int y = r; y >=-r; y--,sb.append("\n"))

for (int x = -2*r; x <= 4*r; x++ ) {

boolean isLeft=inHeart(size,x,y+3);

boolean isRight=inHeart(size,x-25,y);

//双空格

String req=null;

String w="";

if(isLeft && isRight) req=center;

else if(isLeft) req=left;

else if (isRight) req=right;

else if((y==-r || y==r)) {

if (x < 3 * r - 7) {

req = "♥";

w = " ";

}

}

else if(x==4*r || x==-2*r || line(x,y+3)) req="♥";

if(req!=null) sb.append((req + req).charAt((x - y) % req.length() + req.length()) + w);

else sb.append(" ");//双空格

}

System.err.println(sb.toString());

}

private static boolean inHeart(double size,int x,int y){

return Math.pow(Math.pow(x * size, 2) + Math.pow(y * 2*size, 2) - 1, 3) - Math.pow(x * size, 2) * Math.pow(y * 2*size, 3) <= 0;

}

private static boolean line(int x,int y){

return 4*y-x == 0;

}

上次发表由于某些原因被删除,新增功能后重新补发

Java新人自学交流群:202250194返回搜狐,查看更多

责任编辑:

### 回答1: 要使用 Java 语言打印一个心形图案,你可以使用两个 for 循环和一些字符串拼接来实现。你也可以使用 ASCII 码来打印心形图案,这将更加简单。 以下是使用两个 for 循环和字符串拼接的示例代码: ``` public class HeartShape { public static void main(String[] args) { for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == 0 && j % 3 != 0) { System.out.print(" "); } else if (i == 1 && j % 3 == 0) { System.out.print(" "); } else if (i - j == 2 || i + j == 8) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); } } } ``` 以下是使用 ASCII 码的示例代码: ``` public class HeartShape { public static void main(String[] args) { System.out.println(" ** "); System.out.println(" * * "); System.out.println("* *"); System.out.println("* *"); System.out.println("* *"); System.out.println(" * * "); System.out.println(" ** "); } } ``` 希望这些示例代码能够帮助你。 ### 回答2: 要使用Java语言打印一个心形图案,我们可以使用嵌套循环来实现。下面是一个参考代码: ```java public class HeartPattern { public static void main(String[] args) { int rows = 10; //图案的行数 for (int i = rows / 2; i <= rows; i += 2) { for (int j = 1; j < rows - i; j += 2) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } for (int j = 1; j <= rows - i; j++) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } for (int i = rows; i >= 1; i--) { for (int j = i; j < rows; j++) { System.out.print(" "); } for (int j = 1; j <= (i * 2) - 1; j++) { System.out.print("*"); } System.out.println(); } } } ``` 这段代码使用了两个嵌套循环来控制行和列的输出。通过控制行数和星号的数量,可以调整图案的大小。运行该程序,即可在控制台上打印一个心形图案。 ### 回答3: 要使用Java语言打印一个心形图案,可以使用循环和条件语句来实现。以下是一个简单的示例代码: ```java public class HeartPattern { public static void main(String[] args) { int size = 8; // 心形的大小,可以根据需要进行调整 for (int i = size/2; i <= size; i+=2) { for (int j = 1; j < size-i; j += 2) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } for (int j = 1; j <= size-i; j++) { System.out.print(" "); } for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println(); } for (int i = size; i >= 1; i--) { for (int j = i; j < size; j++) { System.out.print(" "); } for (int j = 1; j <= (i*2)-1; j++) { System.out.print("*"); } System.out.println(); } } } ``` 运行以上代码,将会在控制台上打印一个心形图案。调整`size`的值可以改变心形的大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值