import java.util.*;
/**
*Description:以控制台起始点坐标为原点,类似于第四象限,
*但是按照第一象限来画图,圆心(r,r),圆的方程x==Math.sqrt(r-(r*r-(r-y)**(r-y)))
*纵横比为2
*Date: 2018/7/21
*@author MechanicalDog
*@version 1.0
*/
public class Circle
{
public static void main(String[] args)
{
//从键盘读取一个整数
Scanner radius = new Scanner(System.in);
int r;
r = radius.nextInt();
//调用方法
paintCircle(r);
}
/**
*用'*'画近似圆
*@param r1 圆的半径
*/
public static void paintCircle (int r1)
{
int x = 0;
int y = 0;
int r = 0;
r = r1;
//i+=2,这里设定y/x == 2,即纵横比为2
for(int i = 0 ; i <= 2 * r ; i+=2 )
{
x = getX(r,y);
//System.out.print(getSpace(x)+'*');简化了代码
//输入左空格
System.out.print(getSpace(x));
//输入*
System.out.print('*');
//输入中间空格
System.out.print(getSpace( 2 * (r - x) ));
//输入*
System.out.print('*');
//换行
System.out.print('\n');
//近似比,x增1,y增2
y+=2;
}
}
/**
*get圆的横坐标x
*@param r 圆的半径, y 圆的纵坐标
*@return 返回横坐标x
*/
public static int getX( int r , int y)
{
//Math.round()是long类型,强类型转换
return (int)Math.round( r - Math.sqrt( r * r - (r - y) * (r - y) ));
}
/**
*输入空格
*@param s 该参数控制输入多少空格
*@return 返回输入总空格的字符串
*/
public static String getSpace(int s)
{
String space = "";
for(int i = 0 ; i < s ; i++)
{
space+=" ";
}
return space;
}
}