打印圆

package com.dailei.fengkuangjava;

import java.util.Scanner;

public class PrintCircle {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new PrintCircle().circle();

	}

	public void circle() {
		System.out.print("please input r=");
		//从键盘读出半径r
		Scanner str = new Scanner(System.in); 
		int r = str.nextInt();
		//开始画圆。
        //y为圆上点的纵坐标。
        //步长设为2是为了调节屏幕纵横比。由于屏幕的行距大于列距,不进行调节显示出来的将是椭圆。
		for (int y = 0; y <= 2 * r; y += 2) {
			// 定义点的近似横坐标
			long x = Math.round(r - Math.sqrt(2 * r * y - y * y));
			// 定义相同纵坐标的两个点之间的横坐标距离
			long longLength = 2 * (r - x);
			// 打印圆上的点左边的空格
			for (int i = 0; i <= x; i++) {
				System.out.print(' ');
			}
			// 打印圆上同一纵坐标左边的点
			System.out.print('*');
			// 打印圆上同一纵坐标的两点之间的空格
			for (int j = 0; j <= longLength; j++) {
				System.out.print(' ');
			}
			// 打印圆上同一纵坐标右边的点
			System.out.println('*');
		}
	}
}
相关文章
相关标签/搜索