在控制台打印一个圆

来源:互联网 发布:重庆悦来数据谷 编辑:程序博客网 时间:2024/06/05 16:38

在《疯狂Java讲义》中有一道题:通过API文档查询Math类的方法,打印如下图所示的圆:

请输入圆的半径(正整数):5
     **
 *        *
*          *
*          *
 *        *
     **

代码如下:

package com.lwb;import java.util.Scanner;public class Circle {public static void main(String[] args) {    System.out.print("请输入圆的半径(正整数):");    Scanner in = new Scanner(System.in);    int radius=in.nextInt();       paint(radius); //圆半径   }   public static void paint(int r) {    //假定圆心在坐标(r,r);       int y = r * 2; //y的坐标开始       int x = 0;       int c = 0; //中间空格数量       int z = 2; //每行递减量,因为在显示格内,竖行的距离差不多是横行距离的2倍       for (int j = r * 2; j >= 0; j=j-z) {       //循环根据直径来控制           x = getX(r, y);           System.out.print(getSpace(x) + "*");   //左侧*           c = (r-x)*2;   //           System.out.println(getSpace(c) + "*"); //右侧*           y-=z;       }   }   public static int getX(int r, int y) {       //解圆标准方程的           double t = Math.sqrt((r * r) - (y-r)*(y-r));   //求出(x-r)    圆的标准方程:(x-a)2+(y-b)2=r2;(a,b)为圆心       return (int) Math.round(r-t);   //求圆左侧的X   }      //x等于多少,就加入多少个空格;也就是加入的空格数   public static String getSpace(int i) {       String s = "";       for (int j = 0; j < i; j++) {           s += " ";       }       return s;   }}


0 0
原创粉丝点击