虽然你是正确的,绘制光盘或圆形,不需要平方根...public static char[][] kreis(char[][] zf, int xM, int yM, int r, char z){
for(int x=xM-r;x<=xM+r;x++)
for(int y=yM-r;y<=yM+r;y++)
if(x>0 && y>0 && y
r*r>=(x-xM)*(x-xM)+(y-yM)*(y-yM))
zf[y][x]=z;
return zf;}
...绘制圆的轮廓需要求解x或y的等式,因为您只想为坐标填充一个“点”:public static char[][] kreis(char[][] zf, int xM, int yM, int r, char z){
for(int i=-r;i<=r;i++){
int j=(int)Math.round(Math.sqrt(r*r-i*i));
int x=xM+i;
int y=yM-j;
if(x>0 && y>0 && y
zf[y][x]=z;
}
return zf;}
这只是圆圈的一半,但除了需要做同样的事情之外y=yM+j,它还表明轮廓不连续,因此该方法还需要在i和之间进行交换j:public static char[][] kreis(char[][] zf, int xM, int