计算如下立体图形的表面积和体积。从图中观察,可抽取长方体和四棱锥两种立体图形的共同属性到父类Rect中:长度:l 宽度:h 高度:z。 编程要求: (1)在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。 (2)定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。 (3)定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。 (4)在主程序中,输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。 提示: (1)四棱锥体积公式:V= (1/3)Sh,S——底面积 h——高 (2)在Java中,利用Math.sqrt(a)方法可以求得a的平方根(方法的参数及返回结果均为double数据类型)。 输入格式: 输入正整数n,然后输入n行数值型数据(double); 每行三个数值,分别表示l、h、z,数值之间用空格分隔。 若输入数据中有0或负数,则不表示任何图形,表面积和体积均为0。 输出格式: 行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)。 输入样例: 4 1 2 3 0 2 3 -1 2 3 3 4 5 输出样例: 22.00 6.00 11.25 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 94.00 60.00 49.04 20.00 代码长度限制 16 KB 时间限制 400 ms
时间: 2023-11-27 14:52:29 浏览: 171
创建类MyMath,计算圆的周长、面积和球的表面积、体积,结果保留两位小数。若输入的是非数字,则输出:请输入数字!提示:要引入math包。
5星 · 资源好评率100%
```java
import java.util.Scanner;
// 父类
class Rect {
double length;
double height;
double width;
// 构造方法
public Rect(double length, double height, double width) {
this.length = length;
this.height = height;
this.width = width;
}
// 求底面积
public double area() {
return length * width;
}
// 求底面周长
public double length() {
return 2 * (length + width);
}
}
// 子类:立方体
class Cubic extends Rect {
// 构造方法
public Cubic(double length, double height, double width) {
super(length, height, width);
}
// 重写求表面积的方法
public double area() {
return 2 * (length * height + height * width + width * length);
}
// 求体积
public double volume() {
return length * height * width;
}
}
// 子类:四棱锥
class Pyramid extends Rect {
// 构造方法
public Pyramid(double length, double height, double width) {
super(length, height, width);
}
// 重写求表面积的方法
public double area() {
double s = Math.sqrt((length / 2) * (length / 2) + height * height);
return length() * s / 2 + length * s;
}
// 求体积
public double volume() {
return area() * height / 3;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
double length = sc.nextDouble();
double height = sc.nextDouble();
double width = sc.nextDouble();
// 如果长、宽、高中有一个小于等于0,则不表示任何图形,表面积和体积均为0
if (length <= 0 || height <= 0 || width <= 0) {
System.out.println("0.00 0.00 0.00 0.00");
continue;
}
// 计算长方体的表面积和体积
Rect rect = new Rect(length, height, width);
double rectArea = rect.area();
double rectVolume = rectArea * height;
// 计算四棱锥的表面积和体积
Pyramid pyramid = new Pyramid(length, height, width);
double pyramidArea = pyramid.area();
double pyramidVolume = pyramid.volume();
// 输出结果
System.out.printf("%.2f %.2f %.2f %.2f\n", rectArea * 2 + rect.length() * height, rectVolume, pyramidArea, pyramidVolume);
}
sc.close();
}
}
```
阅读全文