《疯狂Java讲义》练习题- 第三章 画近似圆
2010-05-16 14:58
302 查看
其实这个问题并不难,但是很多年没有研究过几何了.问题卡在这里了,准确的说我根本没有学过圆的标准公式这部分内容,google了很多,重新划了坐标研究了公式..解方程...
虽然结果还不是很圆,但是方法应该是正确了.
主要是因为double取整后有一些偏差.
另外行数多少,半径大小也相互影响
---------- 运行Java ----------
**
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
**
输出完成 (耗时 0 秒) - 正常终止
虽然结果还不是很圆,但是方法应该是正确了.
主要是因为double取整后有一些偏差.
另外行数多少,半径大小也相互影响
import java.lang.Math; public class FirstProject { public static void main(String[] args) { paint(40); //半径40 } public static void paint(int r) { //假定圆心在坐标(r,r); int y = r * 2; //y的坐标开始 int x = 0; int c = 0; //中间空格数量 int z = 2; //每行递减量 for (int j = r * 2; j >= 0; j=j-z) { x = getX(r, y); System.out.print(getSpace(x) + "*"); c = (r-x)*2; System.out.println(getSpace(c) + "*"); y-=z; } } public static int getX(int r, int y) { //解圆标准方程的 int x = y - r; double t = Math.sqrt((r * r) - (x * x)); return (int) Math.round(r-t); } public static String getSpace(int i) { String s = ""; for (int j = 0; j < i; j++) { s += " "; } return s; } }
---------- 运行Java ----------
**
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
**
输出完成 (耗时 0 秒) - 正常终止
相关文章推荐
- <<疯狂Java讲义>>练习题- 第三章 画近似圆
- 疯狂JAVA讲义---第三章(上):数据类型和运算符
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 8:抓住那头牛
- 第三章练习题(Chapter3)
- 《Python编程》第三章部分课后练习题
- 《C Primer Plus》(第五版)第三章编程练习题源代码
- 第三章练习题5
- 算法导论(第三版) 第三章练习题
- python核心编程第三章练习题12
- 【第三章】C++ Primer plus 的编程练习题(选取部分)
- Java语言程序设计基础篇第三章编程练习题
- 第三章练习题
- [算法设计与分析]第三章练习题:删除多余括号
- Opencv第三章练习题答案
- 疯狂JAVA讲义第三章之数组篇
- ACCPS2优化MYSCHOOL数据库设计第三章练习题
- C语言程序设计 练习题参考答案 第三章 (1) 顺序结构 输入输出
- C语言程序设计 练习题参考答案 第三章 (2) 选择结构
- 自考(2017年版)《操作系统》——第三章思考题与练习题参考答案(自做)
- Thinking in Java 第四版完整版 第三章练习题