Java代码输出心形图案

初学编程的小伙伴肯定有过这样一个想法,就是我能不能利用代码来输出一个特定的图案呢?比如一个爱心?那必然是可以的,代码能实现的功能很多,这只是其中的一小小用法。以下是思路与代码。

方法一

暴力解法

我们可以先画出一个正方形,然后,随后我们可以在这个正方形的范围内画出一个爱心图案,最后将爱心图案所涉及到的点一个一个标记起来,最后在有标记点的地方输出小爱心,没有标记点的地方输出空白。这样就能在屏幕上输出一个爱心图案了。

例如:这里我选择的是,使用网格图来作为载体,这样更好进行标记点的位置,也便于代码实现
在这里插入图片描述




Java代码实现

注:由于在Java中引用数据类型的默认值为 0 ,所以我们只需要将特定的位置赋值为1起到标记的作用,无需标记其他位置。代码中说的行列是以上面图像作为基础的

public class test {public static void main(String[] args) {//根据图像要求,创建一个行长为12,列长为13的二维数组int[][] arr=new int[12][13];//第一行像素点的赋值for(int i=2,j=10; i<5; ++i,--j){arr[0][i]=1;arr[0][j]=1;}//第二行像素点的赋值int index=1;arr[index][1]=1;arr[index][5]=1;arr[index][11]=1;arr[index][7]=1;//中间独自一个的格子int n=arr[0].length;arr[index+1][(n-1)/2]=1;//第二行到第五行像素点的赋值int i;for(i=2; i<6; ++i){arr[i][0]=1;arr[i][n-1]=1;}//第六行到最后一行的格子int left=1;int right=n-2;for(; i<arr.length; ++i){arr[i][left++]=1;arr[i][right--]=1;}//内部填满InternalMarkup(arr);//输出函数Effect_Output(arr);}//将爱心内部填满public static void InternalMarkup(int[][] arr){for(int i=1; i<arr.length; ++i){//寻找左边界int left=0;while(arr[i][left++] == 0);//寻找右边界int right=arr[i].length-1;while(arr[i][right--] == 0);//左右边界内的格子标记为 1 ,爱心内部填满while(left <= right){arr[i][left]=1;arr[i][right]=1;++left;--right;}}//第一行中间格子需要为零arr[1][arr[1].length/2]=0;return;}//按传递的参数输出爱心图案public static void Effect_Output(int[][] arr){//爱心符号的unicode码char target='\u2764';for(int i=0; i<arr.length; ++i){for(int j=0; j<arr[i].length; ++j){//判断该下标的值是否为 1 ,是则输出爱心图案,反之输出空格if(arr[i][j] == 1){System.out.print(target+" \t");} else{System.out.print(" \t");}}System.out.println();   //换行}}


运行效果
在这里插入图片描述

总结

虽然使用暴力解法,语法变得更简单,但是输出的图像还是太过于生硬了。



方法二

数学公式解法

相信很多人都听说过笛卡尔方程的故事,该方程图形显现出来确实一个心形图像。公式:(X²×Y²-1)³ - X²×Y³=0;

图像
该图片来自网络,侵删
该图片来自网络,侵删



Java代码实现

注:以下代码部分来自知乎,怎么用JAVA打出来小爱心~~~? - 木木编程的回答 - 知乎https://www.zhihu.com/question/352773471/answer/2494438152,注释是自己添加的,本人数学比较差,属实是没想出来怎么用数学公式解这题。

public class test
{public static void main(String[] args){//需要使用浮点数进行运算float x,y;//y轴控制的是图像的长度,因为图像打印是由上往下打印,根据图像y从正数开始//其中递减的值是可由实际情况调整for(y=1.3f; y>-1.1f; y-=0.15f){//x轴控制的是图像的宽度,自左向右打印,根据图像x从负数开始for(x=-1.2f; x<=1.2f; x+=0.05f){//使用中间变量代替较长的运算float temp=x*x+y*y-1;//pow方法作用是获取x的n次方,第一个参数为x,第二个参数为nif( (Math.pow(temp,3) - (x*x*Math.pow(y,3) )) <= 0.0f){//由于unicode码不好进行对齐,所以这里使用 * 号代替System.out.print("*");}else{//输出空格System.out.print(" ");}}//换行System.out.println();}}
}


运行效果
在这里插入图片描述



总结

使用公式法解,图像优化了很多,且语法也并不复杂,只是对数学不太感冒的人来说不够友好,例如我,但这的确是我所了解到的最优解了。所以想要写出更好更优美的代码,还是要学好用好数学。在此,吾与诸君共勉之。

感谢各位的阅读,如有错误,欢迎指出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/68478.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马斯克打了个响指,推特50%员工被裁....

前几天Twitter被收购后要裁员的靴子终于落地了&#xff0c;这次裁员注定要记录史册&#xff0c;堪称惊天地泣鬼神。 我们一起看看马斯克给推特员工准备的裁员方案&#xff1a; 不知道大家看完后什么感想&#xff0c;反正洋哥看完后已经为马斯克拍案叫绝了。 **我简单翻译下&a…

马斯克解雇 Twitter 首席工程师,只因不愿被指“过气”!

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 最近这几周&#xff0c;马斯克可能有点“心烦”。 烦要亲自下场测试 Twitter 功能&#xff0c;烦每周要工作 120 个小时&#xff0c;还要烦特斯拉“秘密宏图的第三篇章”……终于&#xff0c;眼看着…

外媒爆料:PS5将在2019年之后发售,是一次真正的更新换代!

关于索尼的下一代新主机传闻近期层出不穷&#xff0c;并且很多消息都表示它将会在2018年底或者2019年发售。不过&#xff0c;根据消息一直很准确的知名媒体 Kotaku 爆料&#xff0c;索尼确实正在筹备全新的主机&#xff0c;但不会在近期发售。在报道中 Kotaku 表示&#xff0c;…

性能评测|影驰RTX4090金属大师系列显卡正式发售!

未来已至,影驰RTX4090金属大师系列显卡正式上线! 前不久,影驰RTX4090 星曜/金属大师系列显卡跨时代亮相,见证新一次历史变革,如今,它来了。 新一代RTX40系列显卡采用NVIDIAAda Lovelace架构,全新TSMC定制4N工艺,专为GPU优化,能够实现高达2倍的性能功耗比飞跃;依靠RTX40系GPU强…

2020亚洲品牌500强榜单发布 ;肯德基中国门店将限时发售植物肉汉堡 | 美通企业日报...

今日看点 2020亚洲品牌500强榜单发布&#xff0c;阿里巴巴、华为、中国工商银行、腾讯、丰田、中国平安、三星、中国建设银行、索尼、中国人寿荣登“2020亚洲品牌500强”Top10。“2020亚洲品牌500强”榜单作为第15届亚洲品牌盛典的重要成果&#xff0c;在“第15届亚洲品牌盛典”…

rgb sw 线主板接口在哪_光有RGB还不够,显卡竖装才更显高大上,酷冷TD500机箱装机...

现在装机,如是要没有RGB元素的话,那根本就不值得去秀。一般来说越高大上的硬件,RGB元素也就越丰富,当然CPU肯定要除外了,毕竟它是一个特殊的存在。也许那一天就像显卡一样,所有的CPU都集成在主板上,也不算是新鲜的事情。 记得当年,为了让主机显得特别,个性一些,就给机…

iNFTnews丨研究报告:国内NFT发售平台盘点及分析

作者 | BoweniNFTnews.com ZhourxiNFTnews.com 自从2021年NFT的发展浪潮席卷国内&#xff0c;大型科技公司纷纷进军NFT领域&#xff0c;如百度、阿里巴巴、腾讯、京东等大厂&#xff0c;在它们的领头下&#xff0c;市场迅速升温&#xff0c;国内NFT数字藏品平台井喷式爆发&…

Dataset:智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略

Dataset&#xff1a;智慧中国杯—全国大数据创新应用大赛七个数据集简介、下载之详细攻略 目录 智慧中国杯—全国大数据创新应用大赛简介 全国大数据创新应用大赛七个数据集下载 智慧中国杯—全国大数据创新应用大赛简介 智慧中国杯”全国大数据创新应用大赛由“算法资格赛”…

必看·2021中国NFT数字藏品报告总结

随着数字藏品&#xff08;NFT&#xff09;市场火热&#xff0c;发行平台如雨后春笋般陆续出现&#xff0c;据扇贝科技不完全统计&#xff0c;2021年国内数字藏品&#xff08;NFT&#xff09;发行平台多达 38家。 按照藏品的发行质量、数量、平台流量、藏品文化内涵、区块链技术…

鲸探发布点评:7月26日发售

今天鲸探将发3款藏品&#xff1a;《黄河黄河九曲十八弯》、《从杰克岛看塞纳河》、《安涅尔浴场》数字藏品。发行价格18&#xff0c;发行数量10000*3。 《黄河九曲十八弯》以文件夹的形式发售&#xff0c;里面包含多款藏品。这个系列的作品是由中国黄河文化经济发展研究会发起&…

CnOpenData中国理财产品数据

中国理财产品数据 一、数据简介 随着居民财富的增加&#xff0c;投资理财成为居民增加收入的重要方式&#xff0c;银行理财产品、保险产品、公募基金成为居民资产配置的主要方向。理财是指以实现财务的保值、增值为目的&#xff0c;对财务&#xff08;财产和债务&#xff09;进…

《达梦数据库运维实战》 发售了

毕业以后一直从事数据库有关的工作&#xff0c;也一直在坚持技术分享&#xff0c;写了很多的博客&#xff0c;但博客有一定的局限性&#xff0c;所以这几年陆续出版了几本书&#xff0c;2019年和2020年写了2本Oracle 数据库有关的书籍&#xff0c;如下: 《Oracle 18c 必须掌握的…

国行switch服务器在维护中,国行Switch是否锁区锁服?你关心的问题都将在这里解答...

国行Nintendo Switch已于今日(12月10日)正式发售&#xff0c;我们已经拿到国行Switch&#xff0c;并对一些备受关注的问题进行了验证&#xff0c;要点如下&#xff1a; • 国行Switch可以玩海外版卡带&#xff0c;海外版游戏也可以正常更新补丁。 • 国行Switch只能用微信扫码登…

中国工程院院士、中国人工智能学会理事长李德毅:人工智能研究新进展

7 月 22 - 23 日&#xff0c;由中国人工智能学会、阿里巴巴集团 & 蚂蚁金服主办&#xff0c;CSDN、中国科学院自动化研究所承办的第三届中国人工智能大会&#xff08;CCAI 2017&#xff09;将在杭州国际会议中心盛大开幕。 作为中国国内高规格、规模空前的人工智能大会&am…

三星手机在中国市场大势已去?

导读同样的事情,面对不同的对象会出现两种完全不同的结果。爆炸门之后的三星就用切身表现为我们证明了这句话的正确。近日,继临阵换帅之后,三星中国再度传出坏消息。有消息称中国三星电子将撤销七大支社,内部机构将进行重大变革。改编之后,七大支社将变为26个办事处。常务…

新iPad中国发售风光不在的十大原因

曾经的苹果新品发售现场&#xff0c;人头攒动&#xff0c;争先恐后&#xff0c;可谓风光无限。然而&#xff0c;最近的New iPad在中国上市&#xff0c;却显得略微冷清&#xff0c;风光不在&#xff0c;虽没到“门前冷落鞍马稀”的地步&#xff0c;但至少很难用“异常火爆”之类…

在OpenSea上发售NFT

1. 打开opensea.io&#xff0c;链接Metamask钱包。 2. 在首页&#xff0c;点击创建Collection。 3. 添加NFT作品封面Logo、名称及描述&#xff0c;点击创建。 4. 点击进入Collection&#xff0c;添加Item。 5. 点击添加文件、填写作品名称、详情页、描述和特征&#xff0c;点击…

Stable-diffusion-webui 接入ChatGpt图片无法回显

问题描述 Stable-diffusion-webui 使用了chatgpt的prompt优化插件后&#xff0c;生成图片无法回显 log错误日志 解决 查看了 /tmp文件夹下没有 gradio文件夹。那就创建吧 cd /tmp mkdir gradio成功解决 这几天踩了很多坑&#xff0c;搭建了几次 买的腾讯云的GPU服务器。…

【ChatGPT+XMind超级详细的保姆级思维导图教程】

&#x1f680; AI &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN…

人工智能期末考试

第一章-绪论 1. 人工智能的定义 定义&#xff1a;使机器的软件或程序&#xff0c;通过某些算法进行数据学习&#xff0c;并使用所学进行仿人决策。 2. 人工智能的各种认知观 符号主义(symbolism) 原理&#xff1a;基于物理符号系统假设和有限合理性原理&#xff0c;起源于数…