JAVA语言实现控制台打印出近似圆
要实现就需要使用到一些数学公式
代码如下:
public class Test01
{
public static void main(String[] args)
{
//定义一个圆半径
int r=10;
//y为圆上点的纵坐标,最大值为2r
for(int y=0;y<=2*r;y=y+2){
//定义圆上点的横坐标
long x=Math.round(r-Math.sqrt(2*r*y-y*y));
//定义圆上两点距离
long len=2*(r-x);
//打印圆上左边的空格
for(int i=0;i<=x;i++){
System.out.print(" ");
}
//打印圆上左边的点
System.out.print("*");
//打印圆上两点间空格
for(int j=0;j<=len;j++){
System.out.print(" ");
}
//打印圆上右边的点
System.out.println("*");
}
}
}
图解:
如图所示
已知圆的半径r,已知圆的纵坐标,要求得圆上点的横坐标,就需要利用到
勾股定理:r*r=x*x+y*y
圆上点的纵坐标为y,因此要想获得圆中三角的底=y-r
此时x的到圆点的距离 就是 r*r-(y-r)*(y-r)
x的坐标就是r-Math.sqrt(r*r-(y-r)*(y-r))
Math.sqrt 的作用就是开平方
理解:
当y的条件满足时,按照顺序结构 会一次打印y坐标中的
左边点+两点间的空格+右边点
当右边点打印结束时换行
此时就会执行y+2行的打印