本文共 1923 字,大约阅读时间需要 6 分钟。
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
计算如下立体图形的表面积和体积。
从图中观察,可抽取其共同属性到父类Rect中:长度:l 宽度:h 高度:z
在父类Rect中,定义求底面周长的方法length( )和底面积的方法area( )。
定义父类Rect的子类立方体类Cubic,计算立方体的表面积和体积。其中表面积area( )重写父类的方法。
定义父类Rect的子类四棱锥类Pyramid,计算四棱锥的表面积和体积。其中表面积area( )重写父类的方法。
输入立体图形的长(l)、宽(h)、高(z)数据,分别输出长方体的表面积、体积、四棱锥的表面积和体积。
Input
输入多行数值型数据(double);
每行三个数值,分别表示l h z
若输入数据中有非正数,则不表示任何图形,表面积和体积均为0。
Output
行数与输入相对应,数值为长方体表面积 长方体体积 四棱锥表面积 四棱锥体积(中间有一个空格作为间隔,数值保留两位小数)
Sample Input
1 2 30 2 3-1 2 33 4 5
Sample Output
22.00 6.00 11.25 2.000.00 0.00 0.00 0.000.00 0.00 0.00 0.0094.00 60.00 49.04 20.00
Hint
四棱锥体公式:V=1/3Sh,S——底面积 h——高
import java.util.*;import java.text.*;class Rect{ double l,h,z; public Rect(double l, double h, double z) { if(l > 0 && h > 0 && z > 0) { this.l = l; this.h = h; this.z = z; } } public double length() { return (l + h) * 2; } public double area() { return l * h; }}class Cubic extends Rect{ public Cubic(double a, double b, double c) { super(a,b,c); } public double area() { return 2 * super.area() + length() * z; } public double v() { return super.area() * z; }}class Pyramid extends Rect{ public Pyramid(double l, double h, double z) { super(l,h,z); } public double area() { double s1 = Math.sqrt((l / 2) * (l / 2) + z * z); double s2 = Math.sqrt((h / 2) * (h / 2) + z * z); return h * s1 + l * s2 + super.area(); } public double v() { return ( super.area() * z / 3); }}public class Main{ public static void main(String [] args) { Scanner reader = new Scanner(System.in); DecimalFormat g = new DecimalFormat("0.00"); while(reader.hasNext()) { double l = reader.nextDouble(); double h = reader.nextDouble(); double z = reader.nextDouble(); Cubic cc = new Cubic(l,h,z); Pyramid pp = new Pyramid(l,h,z); System.out.println(g.format(cc.area())+ " " + g.format(cc.v())+" " + g.format(pp.area())+" " + g.format(pp.v())); } reader.close(); }}
转载地址:http://nnwtb.baihongyu.com/