计算圆柱体的表面积和体积
【问题描述】
计算圆柱体的表面积和体积(用继承来实现)
实现思路:
(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;
}
}