JAVA-打印圆形三种代码

代码示例一
package three;
import java.util.Scanner;//形象理解:在java.util下将Scanner拿过来用
//import java.awt.Paint;
//import java.lang.Math;

public class test3 {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);// radius半径
		System.out.print("请输入圆的半径:");
	    int r = sc.nextInt();//使用户能够从 System.in 中读取一个数
		for(int i=0;i<=2*r;i+=2) {//行数 小于等于直径
			int x=(int)(r - Math.round(Math.sqrt((2*r*i-i*i))));
			//Math.sqrt此方法返回一个正平方根。如果参数是NaN或小于为零,那么结果为NaN。
			//round() 方法返回一个最接近的 int、long 型值,四舍五入。
			for(int j=0;j<x;j++){//列数。嵌套循环
				System.out.print(" ");//左边空白
			}
			System.out.print("*");//左边界
			for(int k=0;k<2*(r-x);k++) {
				System.out.print(" ");//右边空白	
				}
			System.out.println("*");//右边界
		}
	}
}

运行结果:

请输入圆的半径:4
    **
 *      *
*        *
 *      *
    **
代码示例二
package three;
import java.util.Scanner;//形象理解:在java.util下将Scanner拿过来用
import java.lang.Math;

public class demo {
	    public static void main(String[] args) {
	        System.out.print("请输入圆的半径:");
	        Scanner sc =new Scanner(System.in);// radius半径
	        int radius = sc.nextInt();//使用户能够从 System.in 中读取一个数
	        paint(radius);  //手动输入半径5   
	    }
	    public static void paint(int r){//r是形参  radius传进来了
	        int y = r*2;//y=10
	        int x = 0;
	        int c = 0;
	        int z = 2;
	        for(int j=r*2;j>=0;j=j-z){//j>=0 && j<=10 j=8,
	            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;//x=5
	            double t=Math.sqrt((r*r)-(x*x));
	            //Math.sqrt此方法返回一个正平方根。如果参数是NaN或小于为零,那么结果为NaN。
	            return (int)Math.round(r-t);
	            //round() 方法返回一个最接近的 int、long 型值,四舍五入。
	    }
	    public static String getSpace(int i){
	        String s = " ";
	        for(int j=0;j<i;j++){
	            s+=" ";
	        }
	        return s;
	    }
	}

代码示例:

请输入圆的半径:5
      * *
  *         *
 *           *
 *           *
  *         *
      * *
代码示例三
package three;

public class test4 {
	public static void main(String[] args) {
		 /**
	     * 打印一个圆
	     * 假设圆上一点为(x,y)
	     Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。
	     */
	        int r = 8; //9行 
	        for (int y = 0; y <= 2 * r; y +=2) {//y的步长为2,改变y的步长可以将圆形变成椭圆  
	        	int x = (int)Math.round(r - Math.sqrt(2*r*y-y*y)); //Math.sqrt(r * r-(r-y) *(r-y))转化得 
	        	int len = 2 * (r - x);  //对称的两*之间的距离
	            //i行j列
	            for (int i = 0; i <= x; i++) {  //距离控制台左边的距离
	                System.out.print(" ");  
	            }     
	            System.out.print("*");  
	  
	           for (int j = 0; j <= len; j++) {  
	                System.out.print(" ");  
	            } 
	  
	            System.out.println("*");  
	        	}
	}
}

运行结果:

         * *
    *           *
  *               *
 *                 *
 *                 *
 *                 *
  *               *
    *           *
         * *
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高级搬砖人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值