首页 > 试题广场 >

通过API文档查询Math类的方法,打印出如右所示的近似圆,

[问答题]
通过API文档查询Math类的方法,打印出如右所示的近似圆,只要给定不同半径,圆的大小就会随之发生改变。

import java.util.Scanner; public class Base
{ public static  void main(String[] args)
    {
        Scanner bj = new Scanner(System.in);
        System.out.print("请输入圆的半径:"); int r = bj.nextInt() ;//半径  double R = 2*r;//直径  for (int i = 0;  i <= R; i += 2)
            { double y; if (i <= r) y = r - i ; else y = i - r; double x = Math.round(Math.sqrt(r * r - y * y)); //循环输出  for (int j = 0; j < r - x; j++)
                {
                    System.out.print(" ");
                }
                System.out.print("*"); for (int j = 0; j < 2 * x; j++)
                {
                    System.out.print(" ");
                }
                System.out.println("*");
        }
    }
}

发表于 2019-03-11 09:14:16 回复(0)
import java.util.Scanner;  public class Main { public static void main(String [] args) {
        Scanner sc = new Scanner(System.in);  System.out.println("请输入半径:");  int r = sc.nextInt();  for(int i = 0; i<=2*r;i++){ for(int j = 0; j<=2*r+1;j++){ double dis = Math.sqrt(Math.pow(r,2)-Math.pow(Math.abs(i-r),2));  long dist = Math.round(dis);  if(j==(r-dist)||j==(r+1+dist)){
                    System.out.print("*");  } else{
                    System.out.print(" ");  }
            }
            System.out.print("\n");  }
    }
    }
发表于 2020-01-27 15:43:05 回复(0)
public class Main {

    public static void main(String[] args) {
    int r=30;
    double x;
    for(int y=r;y>=(-r);y-=3)
    {
        x = Math.round(Math.sqrt(r * r - y * y));
        for(int i=0;i<=(2*r);i++) {
            if (i == (r - x) || i == (r + x)) {
                System.out.print("*");
            } else {
                System.out.print(" ");
            }
        }
        System.out.println();
    }

    }

}
编辑于 2019-04-04 13:43:06 回复(0)
import java.util.Scanner;
/**
 * 通过API文档查询Math类的方法,打印出如右所示的近似圆,
 * 只要给定不同半径,圆的大小就会随之发生改变。
 * @author dongzhi
 *
 */
public class ApproximateCircle {
    public static void main(String args[]) {
        ApproximateCircle ac = new ApproximateCircle();
        System.out.println("Please enter the radius of the circle:");
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        int radius = input.nextInt(); //radius
        ac.PrintCircle(radius);
    }
    public void PrintCircle(int r) {
        double R = 2*r;  //  diameter
        for (int i = 0;  i <= R; i += 2){
            double y; 
            if (i <= r) {
                y = r - i ;
            }else {
                y = i - r; 
            }
            double x = Math.round(Math.sqrt(r * r - y * y)); //Loop output
            for (int j = 0; j < r - x; j++) {
                System.out.print(" ");
            }
            System.out.print("*"); 
            for (int j = 0; j < 2 * x; j++) {
                System.out.print(" ");
            }
            System.out.println("*");
        }
    }
}

发表于 2019-04-02 16:48:28 回复(0)
import java.lang.Math;    //需要用到Math类的平方根与取整方法以及绝对值
import java.util.Scanner;
/*
 * @author 
 * @date 2019/03/02
 * 打印输出近似圆
 */
public class Test3_PrintCircleByMath {     public static void main(String[] args) {         Scanner sc = new Scanner(System.in);         System.out.print("请输入圆的半径:");         double radius = sc.nextDouble();         int i,j;    //用于打印近似圆         for (i=1;i<=Math.floor(2*radius);i+=2){             for (j=0;j<=Math.ceil(2*radius);j++){                 double RemarkDistance = Math.sqrt(radius*radius-(radius-i)*(radius-i));                 int FirstRemark,SecondRemark;                 FirstRemark = (int) Math.ceil(radius-RemarkDistance);    //计算第一个和第二个*的位置                 SecondRemark = (int) Math.floor(radius+RemarkDistance);                 if ((j == FirstRemark) || (j == SecondRemark)){                     System.out.print("*");                 }                 else{                     System.out.print(" ");                 }             }             System.out.println();         }     }

}

发表于 2019-03-03 16:31:50 回复(0)