Java如何循环遍历Circle对象数组并输出面积、周长等计算结果
现有代码问题说明
- Circle类的带参构造不符合需求:需求要求接收单个double类型的radius参数,你当前写的是接收double数组的构造,无法直接传入单个半径值创建对象
- 未按要求创建Circle对象数组:当前代码全程只使用了默认构造生成的c1对象,所有输出的圆参数都是半径1的结果,和你定义的circlesRad数组里的数值没有关联
- 输出逻辑冗余:radius等于1的分支里重复写了面积周长的输出逻辑,代码冗余
修正后的完整代码
class Circle { double radius; // 默认构造方法,半径设为1 public Circle() { this.radius = 1; } // 带参构造方法,接收radius参数赋值 public Circle(double radius) { this.radius = radius; } // 计算面积 public double computeArea(){ return Math.PI * radius * radius; } // 计算周长 public double computeCircumference() { return Math.PI * 2 * radius; } } public class TestCircle { public static void main(String[] args) { // 定义5个不同的半径值 double[] radii = {1, 34, 56, 23, 93}; // 创建Circle对象数组 Circle[] circles = new Circle[radii.length]; // 遍历半径数组,逐个创建Circle对象存入数组 for (int i = 0; i < radii.length; i++) { circles[i] = new Circle(radii[i]); } // 迭代Circle数组,输出对应信息 for (Circle circle : circles) { System.out.println("===== Circle信息 ====="); System.out.println("半径:" + circle.radius); System.out.println("面积:" + circle.computeArea()); System.out.println("周长:" + circle.computeCircumference()); // 判断是否为单位圆 if (circle.radius == 1) { System.out.println("This is a unit circle"); } } } }
核心实现逻辑说明
- 首先按需求修正Circle类的带参构造,支持传入单个半径值创建对象
- 在main方法中先定义需要用到的5个半径值,再创建对应长度的Circle对象数组
- 第一轮遍历半径数组,用每个半径值创建Circle对象存入数组,完成对象数组的初始化
- 第二轮遍历Circle对象数组,对每个对象调用方法计算面积、周长输出,同时判断当前对象的radius属性是否为1,符合条件则额外输出单位圆提示
内容的提问来源于stack exchange,提问作者Barney2538
相关产品推荐
相关产品推荐

