package practice;
import java.util.Scanner;
import java.lang.Math;
public class DrawCircle{
public static void main(String[] args){
int radius;
System.out.println("Please input a radius");
Scanner in = new Scanner(System.in);
radius = in.nextInt();
draw(radius); //调用画圆的方法
}
public static void draw(int r){
//圆心为(r,r)
int x = 0; //横坐标
int y = r*2; //纵坐标
int space = 0; //空格数
int move = 2; //每行的纵坐标递减量,因为在显示格内,竖行的距离是横行的两倍
for(int i = y; y >= 0; y = y - move){
x = getX(y, r); //得到x坐标
System.out.print(getSpace(x) + "*");
space = (r-x)*2; //右边的点到x的距离
System.out.println(getSpace(space) + "*");
}
}
public static int getX(int y, int r){
//根据圆的方程(x-a)^2 + (y-b)^2 = r^2来求解,a,b是圆心坐标
double t = Math.sqrt(r*r - (y - r)*(y - r));
return (int) Math.round(r - t);
}
public static String getSpace(int num){
String s = "";
for(int i = 0; i < num; i++) s = s + " ";
return s;
}
}
因为我刚开始没有把下面几个方法设置为静态方法。
中途报错:静态方法不能引用非静态方法。原因见http://blog.csdn.net/shelbyandfxj/article/details/69677823