如何将基于数组的矩形Java程序改为使用ArrayList实现?
完整解决方案
1. ArrayList类型定义说明
存储Rectangle对象的ArrayList类型应为ArrayList<Rectangle>,这是Java泛型的标准用法,明确指定列表仅能存放Rectangle实例,避免后续类型转换的冗余与风险。
2. 完整代码实现
自定义Rectangle类(适配原有程序的方法定义)
public class Rectangle { private double width; private double height; // 默认构造方法:生成宽高为1.0的矩形 public Rectangle() { this.width = 1.0; this.height = 1.0; } // 计算面积 public double getArea() { return width * height; } // 计算周长 public double getPerimeter() { return 2 * (width + height); } }
主程序(替换数组为ArrayList实现)
import java.util.ArrayList; import java.util.Scanner; public class RectangleDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 输入矩形数量 System.out.print("请输入要生成的矩形数量:"); int count = scanner.nextInt(); // 初始化存储Rectangle的ArrayList ArrayList<Rectangle> rectangles = new ArrayList<>(); // 循环生成默认宽高的矩形并添加到列表 for (int i = 0; i < count; i++) { rectangles.add(new Rectangle()); } // 遍历列表,计算并输出每个矩形的面积与周长 for (int i = 0; i < rectangles.size(); i++) { Rectangle currentRect = rectangles.get(i); System.out.printf("第%d个矩形:面积=%.2f,周长=%.2f%n", i + 1, currentRect.getArea(), currentRect.getPerimeter()); } scanner.close(); } }
3. 关键逻辑说明
- ArrayList初始化:
ArrayList<Rectangle> rectangles = new ArrayList<>();利用Java 7+的菱形运算符<>自动推断泛型类型,简化代码。 - 元素操作:通过
add()方法向列表添加矩形实例,size()获取列表长度,get(index)获取指定位置的元素,替代数组的下标访问方式。 - 遍历逻辑:使用普通for循环遍历列表,也可改用增强for循环简化代码:
for (Rectangle rect : rectangles) { // 输出逻辑同上 }
内容的提问来源于stack exchange,提问作者Kraken
相关产品推荐
相关产品推荐

