Lesson_5 作业_2 ---- 计算圆的面积和周长
一、题目描述
创建一个圆心类,圆心类中包含两个属性x,y坐标float类型。
请在圆心类中创建两个带参数的构造方法(第一个带有x的参数,第二个带有x和y)。第二个构造方法中调用第一个构造方法。
然后创建一个圆类,圆类中包含一个属性r半径float类型。请在圆类中同样提供构造方法。并且提供两个方法,一个用来返回面积,一个用来返回周长。
最后写个测试类,创建出一个圆,同时计算出其面积。
二、关于 java.lang.Math
1、java.lang.Math类中包含E和PI两个静态常量,以及进行科学计算的类(static)方法,可以直接通过类名调用。
public static final Double
E = 2.7182818284590452354
public static final Double
PI = 3.14159265358979323846
2、常用方法
abs(double x):传回 x 的绝对值。X也可int long float
sin(double x): 传回x径度的正弦函数值
cos(double x):传回x径度的余弦函数值
tan(double x): 传回x径度的正切函数值
asin(double x):传回x值的反正弦函数值。
acos(double x):传回x值的反余弦函数值。
atan(double x):传回x值的反正切函数值。
atan2(double x, double y):传回极坐标(polar)的θ值
floor(double x):传回不大于x的最大整数值,即向下取整
ceil(double x):传回不小于x的最小整数值,即向上取整
exp(double x):传回相当于ex值
log(double x):传回x的自然对数函数值
max(double x,double y):传回x、y较大数
min(double x,double y):传回x、y较小数
pow(double x,double y):传回x的y次幂值
sqrt(double x): 传回x开平方值
rint(double x):传回最接近x的整数值
round(double x):传回x的四舍五入值
toDegrees(double angrad):传回将angrad径度转换成角度
toRadians(double angdeg): 传回将angdeg角度转换成径度
random():传回随机数值,产生一个0-1之间的随机数(不包括0和1)
还有很多方法可以查API文档http://docs.oracle.com/javase/7/docs/api/
三、要在一个构造方法中调用另一个构造方法,可以使用this()的方式调用,this()必须作为构造方法的第一条语句,换句话说,在this()之前不能有任何的可执行代码。
四、代码
1 /*****************************问题描述************************** 2 * 创建一个圆心类,圆心类中包含两个属性x,y坐标float类型。 3 * 请在圆心类中创建两个带参数的构造方法(第一个带有x的参数, 4 * 第二个带有x和y)。第二个构造方法中调用第一个构造方法。 5 * 然后创建一个圆类,圆类中包含一个属性r半径float类型。 6 * 请在圆类中同样提供构造方法。并且提供两个方法,一个用来 7 * 返回面积,一个用来返回周长。 8 * 最后写个测试类,创建出一个圆,同时计算出其面积。 9 *****************************************************************/ 10 11 12 /*********************************************************** 13 * 14 * 计算圆的周长和面积 15 * 2013-01-16 16 * by CocoonFan 17 * 18 ***********************************************************/ 19 20 import java.lang.Math; 21 import java.util.Scanner; 22 23 public class CaclCircle{ 24 public static void main(String []args){ 25 CircleCenter circleCenter = new CircleCenter(1.4f,20.0f); 26 Circle circle = new Circle(4.3f); 27 System.out.println("圆心的坐标为 ( " + circleCenter.x + "," + circleCenter.y + " )"); 28 System.out.println("半径r = " + circle.radius + " 的圆的周长为:" + circle.circumference()); 29 System.out.println("半径r = " + circle.radius + " 的圆的面积为:" + circle.area()); 30 31 } 32 } 33 34 //圆心类 35 class CircleCenter{ 36 float x; 37 float y; 38 39 //构造方法 40 public CircleCenter(float x){ 41 this.x = x; 42 } 43 public CircleCenter(float x, float y){ 44 this(x);//第二个构造方法调用第一个构造方法 45 this.y = y; 46 } 47 } 48 49 class Circle{ 50 float radius;//半径 51 52 //构造方法 53 public Circle(){ 54 radius = 0; 55 } 56 public Circle(float radius){ 57 this.radius = radius; 58 } 59 60 //计算面积 61 public float area(){ 62 float a =(float)(Math.PI*radius*radius); 63 return a; 64 } 65 66 //计算周长 67 public float circumference(){ 68 float c = (float)(2*Math.PI*radius); 69 return c; 70 } 71 }
老师的代码
1 /**************************************************************** 2 * 作业解答 3 * 题目二:计算圆的周长和面积 4 * note by CocoonFan 5 * 2013-01-16 6 ****************************************************************/
1 public class Ans_CalcCircle{ 2 public static void main(String []args){ 3 //测试:对象的定义 4 //类名 对象名 = new 类名([参数1, 参数2,···]); 5 Circle c = new Circle(24.5f); 6 System.out.println("圆的面积" + c.area()); 7 System.out.println("圆的周长" + c.circumference()); 8 } 9 } 10 11 class Pointer{ 12 private float x; 13 private float y; 14 15 public Pointer(float x){ 16 this.x = x; 17 } 18 public Pointer(float x, float y){ 19 this(x); 20 this.y = y; 21 } 22 } 23 24 class Circle{ 25 26 private float r; 27 public final float PI = 3.14159f;//定义常量:程序中不允许改变他的值 28 29 public Circle(float r){ 30 this.r = r; 31 } 32 33 public float area(){ 34 return PI * r * r; 35 } 36 37 public float circumference(){ 38 return 2*PI*r; 39 } 40 }
五、运行结果