利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。
通过各个不同的字符:j,z,s,y,t进入不同的类从而来计算不同的图形的面积
class juxing implements Shape{ double longnumber; double weadenumber; double area; juxing(double longnumber,double weadenumber){ this.longnumber=longnumber; this.weadenumber=weadenumber; } public double getmianji() { return area=longnumber*weadenumber; } }
class gc { Shape shape=null; Scanner reader =new Scanner(System.in); public Shape shape(){ char q=reader.next().charAt(0); switch(q){ case 's': System.out.println("三角形的面积是:");shape =new sjx(1,4,2); break; case 't': System.out.println("梯形的面积是:");shape = new tixing(1,2,5); break; case 'j': System.out.println("矩形的面积是:");shape = new juxing(5,2); break; case 'z': System.out.println("正方形的面积是:");shape = new zfx(6); break; case 'y': System.out.println("圆形的面积是:");shape = new yuanxing(2); break; } return shape; } }
class zhuti{ Shape shape; double gao; zhuti(Shape shape,double gao){ this.shape=shape; this.gao=gao; } void huandi(Shape shape) { this.shape=shape; } double tiji() { return shape.getmianji()*gao; } }
interface Shape{ abstract double getmianji(); }
class tixing implements Shape{//定义梯形类并实现接口,求面积 double sd; double xd; double gao; tixing(double sd,double xd,double gao){ this.gao=gao; this.sd=sd; this.xd=xd; } public double getmianji() { return (sd+xd)*gao/2; } }
class yuanxing implements Shape{ double r; yuanxing(double r){ this.r=r; } public double getmianji() { return Math.PI*r*r; } }
class sjx implements Shape{
double a; double b; double c; sjx(double a,double b,double c){ this.a=a; this.b=b; this.c=c; } public double getmianji() { double d= (a+b+c)/2; return Math.sqrt(d*(d-a)*(d-b)*(d-c)); } }
class zfx implements Shape{ double bian; zfx(double bian){ this.bian=bian; } public double getmianji(){ return bian*bian; } }
public class zz {private static boolean ture; public static void main(String[] args) { double gao=2; gc gc1=new gc(); for(;;){ zhuti zhuti1=new zhuti(gc1.shape(), gao); System.out.println(zhuti1.tiji()); } } }