JAVA用“*”打印出圆形实验案例
目标:使用Java语言用字符‘*’打印出圆形。
思路:假设要打印一个半径为r的圆,那么圆上的每个点到圆心距离都是r,而我们又知道了圆心的坐标(r,r),故可以知道当某个点距圆心距离为r时就打印‘*’。于是可以用len来表示圆在该行的弦长,而弦两侧要输出‘*’。
注意事项:
- 首先如果每行都进行如上判断,那么会发现输出的圆成了“椭圆”,其高度差不多是宽度的两倍,故我们改变一下,每两行进行一次如上判断,可以输出一个近似圆。
- 其中几个函数作用如下:
Math.abs();//求绝对值
Math.sqrt();//求开方根
Math.round();//求近似整数
代码示例:
public class Circle {
private double r;
double eps = 1;
Circle(double r){
this.r = r;
}
public void printCricle() {
double R = 2*r;
for(int i = 0;i <= R;i+=2) {
double y;
if(i <= r) y = r-i;
else y = i-r;
double len = Math.round(Math.sqrt(r*r - y*y));
for(int j = 0;j < r-len;j++) System.out.print(" ");
System.out.print("*");
for(int j = 0;j < 2*len;j++) System.out.print(" ");
System.out.println("*");
}
}
}
效果图: