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;
}
}
![]()