张九川第9次作业

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;
    }
}

猜你喜欢

转载自www.cnblogs.com/zhangjiuchuan/p/11671945.html