• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
李佳琦
博客园    首页    新随笔    联系   管理    订阅  订阅

JAVA第九次作业

题目:

利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。

 

 

代码:

aa.java

 1 package aaa;
 2 
 3 public class aa implements dd {           // 接口
 4     double r;
 5 
 6     public aa(double r) {                   
 7         this.r = r;
 8     }
 9 
10     @Override
11     public double getArea() {                  
12         return Math.PI * r * r;
13 
14     }
15 
16 }

bb.java

 1 package aaa;
 2 
 3 import java.util.Scanner;
 4 
 5 public class bb { // 类
 6 
 7     dd getShape(char c) { 
 8 
 9         dd shape = null;
10         switch (c) {
11         case 's': // 三角形
12             System.out.println("请输入三角形的三边长:");
13             Scanner reader = new Scanner(System.in);
14             double a1 = reader.nextDouble();
15             double a2 = reader.nextDouble();
16             double a3 = reader.nextDouble();
17             shape = new hh(a1, a2, a3);
18             System.out.println("以三角形为底的柱体体积为:");
19             break;
20         case 'j': // 矩形
21             System.out.println("请输入矩形的长和宽:");
22             Scanner reader1 = new Scanner(System.in);
23             double a4 = reader1.nextDouble();
24             double a5 = reader1.nextDouble();
25             shape = new cc(a4, a5);
26             System.out.println("以矩形为底的柱体体积为:");
27             break;
28 
29         case 'z': // 正方形
30             System.out.println("请输入正方形的边长:");
31             Scanner reader3 = new Scanner(System.in);
32             double a6 = reader3.nextDouble();
33             shape = new ee(a6);
34             System.out.println("以正方形为底的柱体体积为:");
35             break;
36         case 't': // 梯形
37             System.out.println("请输入梯形的上底下底和高:");
38             Scanner reader4 = new Scanner(System.in);
39             double b1 = reader4.nextDouble();
40             double b2 = reader4.nextDouble();
41             double b3 = reader4.nextDouble();
42             shape = new gg(b1, b2, b3);
43             System.out.println("以梯形为底的柱体体积为:");
44             break;
45         case 'y': // 圆
46             System.out.println("请输入圆的半径:");
47             Scanner reader5 = new Scanner(System.in);
48             double b4 = reader5.nextDouble();
49             shape = new aa(b4);
50             System.out.println("以圆为底的柱体的体积为:");
51             break;
52         }
53         return shape;
54 
55     }
56 }

cc.java

 1 package aaa;
 2 
 3 public class cc implements dd {     //矩形类使用Shape接口
 4     double length;                           
 5     double width;
 6 
 7     public cc(double length, double width) {  
 8         this.length = length;
 9         this.width = width;
10     }
11 
12     public double getArea() {                        
13         return length * width;
14     }
15 }

dd.java

1 package aaa;
2 
3 public interface dd {       
4     double getArea();       
5 
6 }

ee.java

1 package aaa;
2 
3 public class ee extends cc {   
4 
5     public ee(double side) {         
6         super(side, side);
7     }
8 
9 }

ff.java

 1 package aaa;
 2 
 3 import java.util.Scanner;
 4 
 5 public class ff {
 6 
 7     public static void main(String[] args) {
 8 
 9         System.out.println("选择柱体以什么为底:");
10         System.out.println("z:正方形  \ns:三角形 \nt:梯形\ny:圆 \nj:矩形\n   ");
11         Scanner sc = new Scanner(System.in);
12         char c = sc.next().charAt(0);
13         System.out.println("输入柱体的高:");
14         double d = sc.nextDouble();
15         bb factory = new bb();
16         dd shape = factory.getShape(c); // 求底
17 
18         System.out.println(ii.getVolume(shape.getArea(), d));
19     }
20 
21 }

gg.java

 1 package aaa;
 2 
 3 public class gg implements dd {                   
 4     double top;                                               
 5     double under;
 6     double h;
 7     public gg(double top,double under,double h){    
 8         this.top=top;
 9         this.under=under;
10         this.h=h;
11     }
12     @Override
13     public double getArea() {                           
14         
15         return (top+under)*h/2;
16     }
17 
18 }

hh.java

 1 package aaa;
 2 
 3 public class hh implements dd {       
 4     double a;                                  
 5     double b;
 6     double c;
 7     public hh(double a,double b,double c){    
 8         this.a=a;
 9         this.b=b;
10         this.c=c;
11     }
12     @Override
13     public double getArea() {                    
14         double p=(a+b+c)/2;
15         return Math.sqrt(p*(p-a)*(p-b)*(p-c));
16         
17     }
18 
19 }

ii.java

 1 package aaa;
 2 
 3 public class ii implements dd {                   
 4     double height; //定义height变量表示矩形的高,定义shape对象来表示具体的底面图形
 5     dd shape;
 6     
 7     public ii(dd shape,double height){
 8         this.shape=shape;
 9         this.height=height;
10     }
11     @Override
12     public double getArea() {                      
13 
14         return 0;
15     }
16 
17     public static double getVolume(double area, double height) {   
18         return area * height;
19     }
20     
21 
22 }

 

 

运行结果:

 

posted @ 2019-10-09 09:53  李佳琦  阅读(194)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3