用math方法画一个近似圆

题目是这样的:《疯狂Java讲义》第3章第2题:通过API文档查询Math方法,打印出一个由星号组成的圆.

本人也是刚开始学习java,学了一段时间,基本 的语法差不多懂了,但是自己写程序感觉还是无从下手,看都这个题目,感觉自己应该可以的,但是想了一两个小时,然后打算先根据半径打印一个十字行,然后在补充边缘部分,最后实在是弄不出来,只好网上查资料,发现了网友的如下方法,就是根据圆的标准方程来的,贴在下面,算是做一个笔记吧。



package han;

import java.util.Scanner;
public class Circle {
@SuppressWarnings("resource")
public static void main(String[] args) {
    System.out.print("请输入圆的半径(正整数):");
    Scanner in = new Scanner(System.in);
    int radius=in.nextInt();
       paint(radius); //半径40
   }
   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) {
       //解圆标准方程的
       int x = y - r;       
       double t = Math.sqrt((r * r) - (x * x));
       return (int) Math.round(r-t);
   }
   public static String getSpace(int i) {
       String s = "";
       for (int j = 0; j < i; j++) {
           s += " ";
       }
       return s;
   }
import java.lang.Math;
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值