疯狂java讲义--第三章习题 画圆
2015-10-28 21:17
459 查看
/**
* 画圆算法,给定半径r,输出圆形
* @author joy
*
*/
public class DrawCircleTest {
private int r;// 圆的半径
DrawCircleTest (int r) {
this.r = r;
}
void paint () {
int y = 2 * r;
int x1 = 0;
int x2 = 0;
//由于计算的失真,画圆时y坐标递减为2,否则画出圆会拉长
for (int i = y; i >= 0; i -= 2) {
x1 = getX(i);
x2 = 2 * r - x1;
System.out.print(getSpace(x2) + "*");
System.out.println(getSpace(x1 - x2) + "*");
//System.out.println("("+ x2 + "," + i +")"+ "(" + x1 + "," + i + ")");
}
}
int getX (int y) {
double temp = 0;
temp = Math.sqrt((double)(r * r - (y - r) * (y - r)));
return (int)Math.round(temp) + r;
}
String getSpace (int n) {
String space = "";
for (int i = 0; i < n; i++) {
space += " ";
}
return space;
}
public static void main(String args[]) {
new DrawCircleTest(6).paint();
}
}
* 画圆算法,给定半径r,输出圆形
* @author joy
*
*/
public class DrawCircleTest {
private int r;// 圆的半径
DrawCircleTest (int r) {
this.r = r;
}
void paint () {
int y = 2 * r;
int x1 = 0;
int x2 = 0;
//由于计算的失真,画圆时y坐标递减为2,否则画出圆会拉长
for (int i = y; i >= 0; i -= 2) {
x1 = getX(i);
x2 = 2 * r - x1;
System.out.print(getSpace(x2) + "*");
System.out.println(getSpace(x1 - x2) + "*");
//System.out.println("("+ x2 + "," + i +")"+ "(" + x1 + "," + i + ")");
}
}
int getX (int y) {
double temp = 0;
temp = Math.sqrt((double)(r * r - (y - r) * (y - r)));
return (int)Math.round(temp) + r;
}
String getSpace (int n) {
String space = "";
for (int i = 0; i < n; i++) {
space += " ";
}
return space;
}
public static void main(String args[]) {
new DrawCircleTest(6).paint();
}
}
相关文章推荐
- SpringMVC学习系列 之 表单标签
- 【NOJ】(Java)完美立方
- springmvc form表单标签使用
- Java并发编程:并发容器之CopyOnWriteArrayList
- Java中迭代器初深
- java常用类库之Runtime
- Java IO最详解
- Spring+SpringMVC+MyBatis+Maven 服务端XML配置
- 编程思想之多线程与多进程(3):Java 中的多线程
- java Vamei快速教程22 内存管理和垃圾回收
- Spring-实现FactoryBean接口的方式配置Bean
- Java学习备忘 (一)之二
- Java - 继承(基础)
- JavaWeb Cookie
- java的线程同步机制synchronized关键字的理解
- 09 智慧桥/ 艾摩君
- java 中 写 json 小知识
- Java三元运算符——类型必须一致
- Spring-工厂创建Bean
- SpringMVC json