计算圆柱体的表面积和体积

【问题描述】
计算圆柱体的表面积和体积(用继承来实现)

实现思路:

(1)定义一个圆类Circle,它有半径radius及获取面积和周长的相关方法

   (2)定义一个圆柱类Cylinder,它继承自父类Circle,还拥有柱高height及获取表面积和周长的相关方法

    定义主类,在主类中创建Cylinder对象,计算并显示其表面积和体积。

【输入形式】

两个浮点数用空隔隔开,分别表示圆柱的底圆的半径、圆柱体的高

【输出形式】

第一行圆柱的表面积

   第二行圆柱的体积

【样例输入】

1 2

【样例输出】

18.85

   6.28

【样例说明】输出保留两位小数

实现提示:

一、编写一个圆类Circle,该类拥有:

(1)一个成员变量

radius         //存放圆的半径;私有,浮点型

(2)两个构造方法

Circle( )            //将半径设为0

   Circle(doubler  r)   //将半径初始化为r

(3)三个成员方法

double getArea( )       //获取圆的面积

   double getPerimeter( )   //获取圆的周长

二、编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:

(1)一个成员变量

double height   //圆柱体的高;私有,浮点型

(2)构造方法

Cylinder (double r, double  h )   //初始化半径为r,高为h

(3)成员方法

double getArea( )          //获取圆柱体的表面积

   double getVolume( )        //获取圆柱体的体积

三、编写主类程序,输入圆柱的底圆的半径、圆柱体的高,计算并显示圆柱的表面积和圆柱体的体积

//Main类
import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         double r, h;
         r =  scanner.nextDouble();
         h =  scanner.nextDouble();
         Cylinder c = new  Cylinder(r, h);
         System.out.printf("%.2f\n",c.getArea());
         System.out.printf("%.2f",c.getVolume());
	}

}
//Circle类
public class Circle {
    private double radius;
	public Circle() {
		this.radius = 0;
	}
	public Circle(double r) {
		this.radius = r;
	}
	public double getArea(){
		return Math.PI * radius * radius;
	}
	public double getPerimeter(){
		return 2 * Math.PI * radius;
	}
	public void setRadius(double r){
		this.radius = r;
	}
	public double getRadius(){
		return  this.radius;
	}
}
// Cylinder类
public class Cylinder extends Circle {
       private double height;
	public Cylinder(double r, double h) {
		setRadius(r); //或者super(r);
		this.height = h;
	}
	public double getVolume(){
		return Math.PI * getRadius() * getRadius() * height;
              //或者 return super.getArea() * height;
	}
	public double getArea(){
		return 2 * Math.PI * getRadius() * getRadius() + 2 * Math.PI * getRadius() * height;
              //或者	return 2 * super.getArea() + super.getPerimeter() * height;
	}
}

B)计算圆柱体的表面积和体积

【问题描述】计算圆柱体的表面积和体积(用组合来实现)

实现思路:

(1)定义一个圆类Circle,它有半径radius及获取面积和周长的相关方法

   (2)定义一个圆柱类Cylinder,它包含一个底circle(圆)和柱高height两个成员变量及获取表面积和周长的相关方法

   定义主类,在主类中创建Cylinder对象,计算并显示其表面积和体积。

【输入形式】

两个浮点数用空隔隔开,分别表示圆柱的底圆的半径、圆柱体的高

【输出形式】

第一行圆柱的表面积

   第二行圆柱的体积

【样例输入】

1 2

【样例输出】

18.85

   6.28

【样例说明】输出保留两位小数
【评分标准】

实现提示:

一、编写一个圆类Circle,该类拥有:

(1)一个成员变量

radius         //存放圆的半径;私有,浮点型

(2)两个构造方法

Circle( )            //将半径设为0

   Circle(doubler  r)   //将半径初始化为r

(3)三个成员方法

double getArea( )       //获取圆的面积

   double getPerimeter( )   //获取圆的周长

二、编写一个圆柱体类Cylinder,它组合了Circle类:

(1)两个成员变量

Circle  circle   //圆柱体的底圆,私有

   double height    //圆柱体的高;私有,浮点型

(2)构造方法

Cylinder (Circle c, double  h )   //初始化底圆为c,高为h

(3)成员方法

double getArea( )          //获取圆柱体的表面积

   double getVolume( )        //获取圆柱体的体积

三、编写主类程序,输入圆柱的底圆的半径、圆柱体的高,计算并显示圆柱的表面积和圆柱体的体积

//Main类
public class Main {
	public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         double r, h;
         r =  scanner.nextDouble();
         h =  scanner.nextDouble();
         Circle  c = new Circle(r);
         Cylinder cy = new  Cylinder(c, h);
         System.out.printf("%.2f\n",cy.getArea());
         System.out.printf("%.2f",cy.getVolume());
	}
}
//Circle类
public class Circle {
    private double radius;
	public Circle() {
		this.radius = 0;
	}
	public Circle(double r) {
		this.radius = r;
	}
	public double getArea(){
		return Math.PI * radius * radius;
	}
	public double getPerimeter(){
		return 2 * Math.PI * radius;
	}
	public void setRadius(double r){
		this.radius = r;
	}
	public double getRadius(){
		return  this.radius;
	}
}
//Cylinder类 
public class Cylinder {  
	private Circle circle;  
       private double height;
	public Cylinder(Circle c, double h) {
	       circle = c;
		height = h;
	}
	public double getVolume(){
		return Math.PI * circle.getRadius() * circle.getRadius() * height;
              //或者 return circle.getArea() * height;
	} 
	public double getArea(){
		return 2 * Math.PI * circle. getRadius() * circle. getRadius() + 2 * Math.PI * circle. getRadius() * height;
              //或者 return 2 * circle.getArea() + circle. getPerimeter() * height;
	}
}