Java 圆形类:属性、方法和统计示例

本文将通过示例代码展示如何用 Java 创建一个 Circle 类,并使用它来生成、打印、查找、统计和排序圆形。

1. Circle 类定义:

public class Circle {
    private String color;
    private int r;

    public Circle(String color, int r) {
        this.color = color;
        this.r = r;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getR() {
        return r;
    }

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

    public double getArea() {
        return Math.PI * r * r;
    }

    @Override
    public String toString() {
        return color + '-' + r;
    }
}

2. 主程序代码:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        List<Circle> circleList = generateCircles();
        printCircles(circleList);
        findRedCircle(circleList);
        countRedCircle(circleList);
        sortByArea(circleList);
        countCircleBySize(circleList);
    }

    // 生成20个圆
    public static List<Circle> generateCircles() {
        List<Circle> circleList = new ArrayList<>();
        String[] colors = { '红色', '绿色', '蓝色' };
        Random random = new Random();
        for (int i = 0; i < 20; i++) {
            int r = random.nextInt(10) + 1;
            String color = colors[random.nextInt(3)];
            circleList.add(new Circle(color, r));
        }
        return circleList;
    }

    // 打印20个圆的信息
    public static void printCircles(List<Circle> circleList) {
        for (Circle circle : circleList) {
            System.out.println(circle);
        }
    }

    // 查找是否存在红色的,并且半径是5的圆形
    public static void findRedCircle(List<Circle> circleList) {
        boolean exist = false;
        for (Circle circle : circleList) {
            if (circle.getColor().equals('红色') && circle.getR() == 5) {
                exist = true;
                break;
            }
        }
        if (exist) {
            System.out.println('存在红色的,并且半径是5的圆形');
        } else {
            System.out.println('不存在红色的,并且半径是5的圆形');
        }
    }

    // 统计有几个红色圆
    public static void countRedCircle(List<Circle> circleList) {
        int count = 0;
        for (Circle circle : circleList) {
            if (circle.getColor().equals('红色')) {
                count++;
            }
        }
        System.out.println('红色圆的个数为:' + count);
    }

    // 将所有的圆按照面积大小,从大到小排序
    public static void sortByArea(List<Circle> circleList) {
        Collections.sort(circleList, new Comparator<Circle>() {
            @Override
            public int compare(Circle o1, Circle o2) {
                return Double.compare(o2.getArea(), o1.getArea());
            }
        });
        System.out.println('排序后的圆:');
        for (Circle circle : circleList) {
            System.out.println(circle);
        }
    }

    // 统计大、中、小圆的个数
    public static void countCircleBySize(List<Circle> circleList) {
        Map<String, Integer> countMap = new HashMap<>();
        int bigCount = 0;
        int middleCount = 0;
        int smallCount = 0;
        for (Circle circle : circleList) {
            if (circle.getArea() > 500) {
                bigCount++;
            } else if (circle.getArea() > 200) {
                middleCount++;
            } else {
                smallCount++;
            }
        }
        countMap.put('大圆', bigCount);
        countMap.put('中圆', middleCount);
        countMap.put('小圆', smallCount);
        System.out.println('大、中、小圆的个数为:' + countMap);
    }
}

代码解释:

  • Circle 类:
    • 包含 colorr 属性,分别表示圆形的颜色和半径。
    • 提供了 getColorsetColorgetRsetRgetAreatoString 方法。
    • getArea 方法用于计算圆形的面积。
    • toString 方法用于重写默认的 toString 方法,返回圆形的颜色和半径信息。
  • 主程序:
    • 使用 generateCircles 方法生成 20 个随机的圆形。
    • 使用 printCircles 方法打印所有圆形的信息。
    • 使用 findRedCircle 方法查找是否存在红色的半径为 5 的圆形。
    • 使用 countRedCircle 方法统计红色圆形的数量。
    • 使用 sortByArea 方法按照面积大小对圆形进行排序。
    • 使用 countCircleBySize 方法统计大、中、小圆形的数量。

总结:

本文介绍了如何在 Java 中创建一个 Circle 类,并使用它进行各种操作,例如生成、打印、查找、统计和排序圆形。希望本示例代码能够帮助你更好地理解 Java 类和对象的创建和使用。

Java 圆形类:属性、方法和统计示例

原文地址: https://www.cveoy.top/t/topic/oiqd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录