图形类对象的管理 java接口和类 练习题

用接口实现  话不多说,上代码

接口

public interface AreaShow {
//    展示当前信息
    void show();
//    面积  要有返回值
    double area();

}

圆类

/*
* 圆类 实现了 面积 展示方法
* 属性 半径
*  周长 2πr
* 面积: π*r*r
* */
public class Circle implements AreaShow{
    private double r;//半径

    @Override
    public void show() {
        System.out.println("该圆半径为:" + r + "直径为:" + (r * 2) + "周长为:" + (2 * Math.PI * r) + "面积为:" + this.area());
    }

    @Override
    public double area() {
        return Math.PI * r * r;
    }

//    构造方法
    public Circle() {
    }

    public Circle(double r) {
        this.r = r;
    }
//get set
    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }
}

圆柱类

/*
* 圆柱类
* 半径  高
* 圆柱周长公式 2πR(半径)
    2.圆柱面积公式 2 πR^2+ 2πRh(高度)
*
* */
public class Clinder implements AreaShow{
    private double h;//高
    private double r;//半径


    @Override
    public void show() {
        System.out.println("该圆柱高为:" + h + "半径为:" + r + "周长为:" + (2*Math.PI*r) + "面积为:"+ this.area());
    }

    @Override
    public double area() {
        return 2 * Math.PI * r * r + 2 * Math.PI * r * h;
    }

//    构造方法
    public Clinder() {
    }

    public Clinder(double h, double r) {
        this.h = h;
        this.r = r;
    }
//get set 方法
    public double getH() {
        return h;
    }

    public void setH(double h) {
        this.h = h;
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }
}

长方体类

/*
* 长方体 类’
* 长  宽 高
*   周长 (长 + 宽 + 高)* 4
*   高 长 * 宽 * 高
* */
public class Cube implements AreaShow{
    private double length;
    private double weigth;
    private double heigth;

    @Override
    public void show() {
        System.out.println("该立方体的长为:" + length + "宽为:" + weigth + "高为:" + heigth + "周长为:" + ((length + weigth + heigth) * 4) + "面积为:" + this.area());
    }
//
    @Override
    public double area() {
//        System.out.println("该面积为:" + (length * weigth * heigth));
        return length * weigth * heigth;
    }

//    构造方法

    public Cube() {
    }

    public Cube(double length, double weigth, double heigth) {
        this.length = length;
        this.weigth = weigth;
        this.heigth = heigth;
    }
//getset
    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public double getWeigth() {
        return weigth;
    }

    public void setWeigth(double weigth) {
        this.weigth = weigth;
    }

    public double getHeigth() {
        return heigth;
    }

    public void setHeigth(double heigth) {
        this.heigth = heigth;
    }

    //
}

矩形类

/*
* 矩形类
* */
public class Rectangle implements AreaShow{
    private double length;//长
    private double  wide;//宽

//    展示周长
    @Override
    public void show() {
        System.out.println("该矩形长:" + length + "宽为:" + wide + "周长:" + (length + wide) * 2 + "面积为:" + this.area());
    }
//   展示面积
    @Override
    public double area() {
//        System.out.println("改矩形面积为:" + (length * wide));
        return length * wide;
    }

//    构造方法

    public Rectangle() {
    }

    public Rectangle(double length, double wide) {
        this.length = length;
        this.wide = wide;
    }
//get set
    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public double getWide() {
        return wide;
    }

    public void setWide(double wide) {
        this.wide = wide;
    }
}

测试类:

import java.util.ArrayList;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
//        创建集合
        ArrayList<Object> arrs = new ArrayList<>();

        Scanner sc = new Scanner(System.in);
        while (true){
            System.out.println("***图形管理系统***");
            System.out.println("----------------");
            System.out.println("1.创建一个圆");
            System.out.println("2.创建一个矩形");
            System.out.println("3.创建一个长方体");
            System.out.println("4.创建一个圆柱体");
            System.out.println("5.显示已经创建的图形");
            System.out.println("6.求个图形的面积之和");
            System.out.println("7.退出系统");
            System.out.println("请输入要实现的数字(0-7)");
            int choice = sc.nextInt();
            switch (choice){
                case 1:
//                    System.out.println("创建元");
                    createCircle(arrs,sc);
                    System.out.println("添加圆形成功!!");
                    break;
                case 2:
//                    System.out.println("创建矩形");
                    createRectangle(arrs,sc);
                    System.out.println("添加矩形成功!!");
                    break;
                case 3:
//                    System.out.println("长方体");
                    createCube(arrs,sc);
                    System.out.println("添加长方体成功!!");
                    break;
                case 4:
//                    System.out.println("创建圆柱体");
                    createClinder(arrs,sc);
                    System.out.println("添加圆柱成功");
                    break;
                case 5:
//                    System.out.println("显示已经创建的图形");
                    showAll(arrs);
                    break;
                case 6:
//                    System.out.println("求各个图形的面积和");
                    double sum = sumArea(arrs);
                    System.out.println("面积总和为:" + sum);
                    break;
                case 7:
                    System.out.println("欢迎使用!");
                    System.exit(0);
                default:
                    System.out.println("输入错误,请重新输入!");
            }
        }
    }
//    创建圆
    public static void createCircle(ArrayList arrayList,Scanner sc){
//        输入半径
        System.out.println("请输入圆型的半径:");
        double banjing = sc.nextDouble();
//        创建新的 圆对象
        Circle circle = new Circle(banjing);
//        添加
        arrayList.add(circle);
    }
//    创建 矩形
    public static void createRectangle(ArrayList arrayList,Scanner sc){
//        输入 长 和高
        System.out.println("请输入长方形的长为:");
        double chang = sc.nextDouble();
        System.out.println("请输入长方形的宽为:");
        double kuan = sc.nextDouble();

//        创建一个新的 矩形
        Rectangle rectangle = new Rectangle(chang,kuan);

        arrayList.add(rectangle);
    }
//    添加长方体
    public static void createCube(ArrayList arrayList,Scanner sc){
        System.out.println("请输入长方体的长:");
        double chang = sc.nextDouble();
        System.out.println("请输入长方体的宽:");
        double kuan = sc.nextDouble();
        System.out.println("请输入长方体的高:");
        double gao = sc.nextDouble();

        Cube cube = new Cube(chang,kuan,gao);

        arrayList.add(cube);
    }
//    添加圆柱
    public static void createClinder(ArrayList arrayList,Scanner sc){
//        半径  高
        System.out.println("请输入该圆柱的半径:");
        double banjing = sc.nextDouble();

        System.out.println("请输入该圆柱的高:");
        double gao = sc.nextDouble();

        Clinder clinder = new Clinder(banjing,gao);
        arrayList.add(clinder);
    }

//    显示已经创建的图形
    public static void showAll(ArrayList arr){
//        遍历 调用方法
        for (int i = 0; i < arr.size(); i++) {
//            进行比较
            if(arr.get(i) instanceof Circle){
//                如果等于 强转成  并 展示show
                ((Circle) arr.get(i)).show();
            }else if(arr.get(i) instanceof Rectangle){
                ((Rectangle) arr.get(i)).show();
            }else if(arr.get(i) instanceof Cube){
                ((Cube) arr.get(i)).show();
            }else if(arr.get(i) instanceof Clinder){
                ((Clinder) arr.get(i)).show();
            }else {
                return;
            }
        }
    }
//    求  总面积和
    public static double sumArea(ArrayList arr){
        double sum = 0;
        for (int i = 0; i < arr.size(); i++) {
//           arr.get(i).show()
//            判断圆形  Circle  再调用方法
            if(arr.get(i) instanceof Circle){
//                强转成
                double areaCircle = ((Circle) arr.get(i)).area();
                sum += areaCircle;
//                矩形
            }else if(arr.get(i) instanceof Rectangle){
                double areaRectangle = ((Rectangle) arr.get(i)).area();
                sum += areaRectangle;
//                长方体
            }else if(arr.get(i) instanceof Cube){
                double areaCube = ((Cube) arr.get(i)).area();
                sum += areaCube;
//                圆柱
            }else if(arr.get(i) instanceof Clinder){
                double areaClinder = ((Clinder) arr.get(i)).area();
                sum += areaClinder;
            }
        }
        return sum;
    }

}

此题有好多地方可以优化  比如 小数Math.PI ....

有要修改的地方 可以评论哦

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

華同学.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值