原标题:程序员的浪漫--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返回搜狐,查看更多

责任编辑:

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

  1. java程序员的浪漫代码_专属于程序员的浪漫-Java输出动态闪图iloveyou

    代码测试可用,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考价值的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程序动态闪 ...

  2. i love java怎么写编程_专属于程序员的浪漫-Java输出动态闪图iloveyou

    代码测试可用使用的,运行结果非常辣眼睛,有种二十一世纪初流行于广大中小学生之间的失落非主流的感觉! 还是比较有参考网上卖的,获取当前日期时间,日期类格式化,图形界面的开发等. java awt实现小程 ...

  3. python 程序员专属情话_程序员最浪漫情话

    程序员往往城还没攻下来,我们的头发就先掉下来! 程序员最浪漫情话: 段子一 "等我敲完这行代码,就和你离婚!" 他头也不抬的说 听完之后,她心里暖暖的 她想,这可能是最长情的承诺. ...

  4. object转成实体对象_程序员的浪漫,new一个对象

    程序员都喜欢 面向对象编程,但如果你没有对象怎么办?当然是 new 一个对象出来. 面向对象编程 是一种程序设计思想,而不是真正的面向你的对象去编程.如果你真的这么做了,恭喜你获得:你爱我还是爱电脑? ...

  5. java压测请求线程数_程序员撕开京东 618 大促压测的另一面 | 原力计划

    作者 | 天涯泪小武 责编 | 王晓曼 出品 | CSDN博客 前天618大促演练进行了全链路压测,在此之前刚好我的热key探测框架也已经上线灰度一周了,小范围上线了几千台服务器,每秒大概接收几千个k ...

  6. 平安java面试流程_程序员:平安Java岗面试耗尽了我毕生所学,想了想,还是去阿里吧...

    之前有个朋友给我发来了一份平安Java中级开发的面试题,我也不知道是否靠谱哈!但是霸哥坚决认为...这绝对不是Java中级工程师的面试,不怕Java程序员造反啊? 后面我把这个文件发给了另一个参加了几 ...

  7. el-date-picker设置默认日期_程序员必备:Java 日期处理的十个坑

    前言 整理了Java日期处理的十个坑,希望对大家有帮助. 一.用Calendar设置时间的坑 反例: Calendar c = Calendar.getInstance(); c.set(Calend ...

  8. java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...

    最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务! 在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,没有注释,也没有一定的 ...

  9. java写一个简单的浪漫代码_程序员的浪漫弹窗表白,圣诞节给Ta惊喜吧(附源码,简单易学哦)...

    不要以为程序员都是木讷的,浪漫起来也会让很多妹子心动的.而程序员的表白方式也很不一般,通过一堆代码,无限释放浪漫.今天教给大家通过改写脚本语言,利用弹窗可充分自由发挥,用来表白或者恶搞都是不错的选择. ...

最新文章

  1. java和打印机通信,通过Windows驱动程序与热敏打印机进行双向通信
  2. svm学习之线性部分总结
  3. JS判断鼠标从哪个方向进入DIV容器
  4. 使用IntelliJ IDEA的原因
  5. react学习(5)----通过设置初始值控制页面render渲染
  6. 多线程之多生产多消费者
  7. jsp连接mysql----------第一篇技术类文章
  8. Python一秒搭建ftp服务器,帮助你在局域网共享文件
  9. RHEL7.0时间同步设置
  10. IE浏览器无法通过ftp:\\192.168.xxx.xxx连接ftp服务器
  11. python汉化版编辑器_Thonny(Python编辑器)
  12. ERP采购管理 华夏
  13. 华为月薪11万招前端工程师,看到要求我傻眼了!
  14. 抖音APP终极瘦身方案
  15. iTunes下载的ipa文件的目录位置
  16. oracle 分区表,分区索引
  17. libusb,libusbk,winusb的区别
  18. IE使用ntko插件,查看文件提示“文件存取错误”
  19. 怎么关闭自动启动的屏幕键盘
  20. 什么是网关模块 工业物联网以太网网关WiFi模块的选型

热门文章

  1. php 微信时间,微信开发中如何进行时间转换代码实例介绍
  2. Activiti(web-based)
  3. 由百事引起的、关于五月天的 胡言乱语
  4. 计算机毕业设计asp.net电脑彩票销售管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
  5. vue 数据库 登录界面_Vue学习之路之登录注册
  6. InDesign 教程如何覆盖母版页项目?
  7. Java之格林威治时间,字符串格式时间
  8. NOIP 2017 普及组 棋盘 chess
  9. css outline是什么意思,用法
  10. 子曰:“吾十有五而志于学.......