使用java绘图类绘制圆圈_java – 递归绘制圆圈
我想画这个:
public void drawCircle(int x, int y, int diameter, int it) {
int d = diameter / 3;
if (it == 0) {
return;
}
g.setColor(Color.green);
g.fillOval(x, y, d, d);
drawCircle(x, y, d, it--); // centre
drawCircle(x - d, y, d, it--); // left
drawCircle(x + d, y, d, it--); // right
}
出于这个问题的目的,忽略我画圆圈的实际位置 – 我会稍后改变它,因为它不太正确.但是,我在程序的逻辑中哪里出错了?对我来说,似乎很清楚我称这种方法在每次迭代中绘制三个圆圈.这是我的错误:
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at sun.java2d.loops.ProcessPath.ProcessMonotonicCubic(Unknown Source)
at sun.java2d.loops.ProcessPath.ProcessCubic(Unknown Source)
at sun.java2d.loops.ProcessPath.doProcessPath(Unknown Source)
at sun.java2d.loops.ProcessPath.fillPath(Unknown Source)
at sun.java2d.pipe.BufferedRenderPipe.fillPath(Unknown Source)
at sun.java2d.pipe.BufferedRenderPipe.fill(Unknown Source)
at sun.java2d.pipe.BufferedRenderPipe.fillOval(Unknown Source)
at sun.java2d.SunGraphics2D.fillOval(Unknown Source)
at Draw.drawCircle(Draw.java:40)
at Draw.drawCircle(Draw.java:41)
这是第40和41行:
g.fillOval(x, y, d, d);
drawCircle(x, y, d, it--); // centre
感谢帮助.
解决方法:
您的递归调用在每次递归调用期间都会收到相同的值,因为它会在递减之前返回它的值.
假设你想在一次迭代中保持它的值不变,只需将它传递给递归调用,例如1.
drawCircle(x, y, d, it - 1); // centre
标签:java,recursion
来源: https://codeday.me/bug/20190624/1279883.html
使用java绘图类绘制圆圈_java – 递归绘制圆圈相关推荐
- 在Java绘图坐标原点在_java 绘图
java 绘图 圆形.线条.矩形.填充 插入图片 文字 //绘图 import java.awt.*; import javax.swing.*; public class Index extends ...
- java流类图结构_java I/O 流总结
一.java 流操作有关的类和接口: 类 说明 Fil ...
- java 常规类的可见性_Java 12常规可用性
java 常规类的可见性 马克·雷因霍尔德(Mark Reinhold) 今天宣布 ," Java 12的参考实现JDK 12现在已全面上市." Reinhold在该公告中指出,& ...
- java流类图结构_java学习之IO流(学习之旅,一)
个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...
- java电脑类的接口_java 一个类实现两个接口的案例
直接用英文逗号分隔就可以了,比如:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 inerface IHello { String sayHello ...
- java日历类add方法_Java日历computeTime()方法及示例
java日历类add方法 日历类computeTime()方法 (Calendar Class computeTime() method) computeTime() method is availa ...
- java日历类add方法_Java日历computeFields()方法及示例
java日历类add方法 日历类的computeFields()方法 (Calendar Class computeFields() method) computeFields() method is ...
- java日历类add方法_Java日历setFirstDayOfWeek()方法与示例
java日历类add方法 日历类setFirstDayOfWeek()方法 (Calendar Class setFirstDayOfWeek() method) setFirstDayOfWeek( ...
- java日历类add方法_Java日历setMinimalDaysInFirstWeek()方法与示例
java日历类add方法 日历类setMinimalDaysInFirstWeek()方法 (Calendar Class setMinimalDaysInFirstWeek() method) se ...
最新文章
- GO语言教程4:defer(延迟语句)详解
- 【玩转双11】今年有点不一样,51CTO学院告诉你如何省钱!
- 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题
- F5 Priority Group Activation
- 5、删除用户(DROP/DELETE USER)
- C++ stirng,int 互转(转载)
- android fragmentactivity fragment,Android:Activity与Fragment通信(99%)完美解决方案
- 移动前端框架重构几个关键问题
- python的变量名有哪些_【python字符串做变量名的方法有哪些?这些方法对python应用很重要】- 环球网校...
- mysql -e 导出_mysql 导出数据导入数据
- HDU6064 Besttheorem
- 使用XMLHttpRequest
- Ubuntu16.0.4 通过Docker安装酷Q
- 单片机c语言编程乘法运算符,单片机C语言编程常用的运算符介绍
- 学嵌入式职业发展方向有哪些?
- 官宣 .NET 6 RC (Release Candidate) 2
- python无限循环小数_如何把一个无限循环小数转换成一个分数(算法)
- 壁纸网站研究:强大到没朋友的壁纸网站整理(动漫/二次元/宅男/风景/真人)
- Android折腾记——Linux on Android在Android手机上跑Linux教程
- struts2-spring-hibernate实现员工的增删查功能
热门文章
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构...
- 动易系统SiteWeaver™CMS6.8SQL Ac正版Build-090918-源代码下载QQ群:55317566.
- [solution]淘宝首页可以ping通但是打不开
- 压缩包文件上传导致覆盖rce
- HTTPS 防范中间人攻击原理
- Android开源项目发现---ListView篇(持续更新)
- 一边学计算机一边上班累的说说,一个人上班累的说说心情短语
- OpenCV图像处理--warpPerspective透视变换
- U3D网络游戏,大厅房间
- 行走的漏洞利用机器人:僵尸网络病毒携71个EXP占领高地