• 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:正方形  
    s:三角形 
    t:梯形
    y:圆 
    j:矩形
       ");
    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 }

    运行结果:

  • 相关阅读:
    delphi 鼠标拖动
    Tesseract-ocr 工具使用记录
    在dcef3当中执行js代码并获得返回值
    idhttp提交post带参数并带上cookie
    新制作加热块
    java 调用oracle 分页存储过程 返回游标数据集
    JDBC链接
    ------------浪潮之巅读后感---------------
    价值观作业
    --------关于C语言的问卷调查-----------
  • 原文地址:https://www.cnblogs.com/lietian12345/p/11639835.html
Copyright © 2020-2023  润新知