package tuxing; public interface shape { abstract double getarea();//创建接口 }
package tuxing; public class yuanxing implements shape {//圆形类 final double p = 3.14; double r; yuanxing(double r) { this.r = r; } public double getarea() { return r * r * p; } } class zhengfangxing implements shape {//正方形类 double a; zhengfangxing(double a) { this.a = a; } public double getarea() { return a * a; } } class changfangxing implements shape {//长方形类 double a; double b; changfangxing(double a, double b) { this.a = a; this.b = b; } public double getarea() { return a * b; } } class tixing implements shape {//梯形类 double a; double b; double h; tixing(double a, double b, double h) { this.a = a; this.b = b; this.h = h; } public double getarea() { return (a + b) * h / 2; } } class sanjiaoxing implements shape {//三角形类 double a; double b; double c; sanjiaoxing(double a, double b, double c) { this.a = a; this.b = b; this.c = c; } public double getarea() { double q = (a + b + c) / 2; return Math.sqrt(q * (q - a) * (q - b) * (q - c)); } }
package tuxing; import java.util.*; public class yunxing {//主方法 public static void main(String[] args) { System.out.println("请输入柱体的高:"); Scanner reader=new Scanner(System.in); double h; h=reader.nextDouble(); for (int j=0;j<5;j++) {//引用换底方法。输出体积。 System.out.println("请选择柱体以何图形为底:“y”为圆形,“z”为正方形,“t”为梯形,“j”为矩形“s”为三角形"); GC a=new GC(); zhuti t =new zhuti(h,a.getShape()); t.setShape(a.shape); System.out.println(t.getvolum()); } } }
package tuxing; import java.util.Scanner; public class GC {//工厂类 shape shape=null; Scanner reader = new Scanner(System.in); public shape getShape() { char z=reader.next().charAt(0); switch(z) { case'y':System.out.println("以圆形为底的柱体体积是:");shape=new yuanxing(6);break; case'z':System.out.println("以正方形为底的柱体体积是:");shape=new zhengfangxing(5);break; case't':System.out.println("以梯形为底的柱体体积是:");shape=new tixing(3,4,5);break; case'j':System.out.println("以矩形为底的柱体体积是:");shape=new changfangxing(2,3);break; case's':System.out.println("以三角形为底的柱体体积是:");shape=new sanjiaoxing(3,4,5);break; } return shape; } }
package tuxing; public class zhuti{//柱体类 double h; shape a; zhuti(double h,shape a){//构造方法 this.h=h; this.a=a; } public double getvolum() {//求体积方法 return h*a.getarea(); } public void setShape(shape a){//换底方法 this.a=a; } }