如何将固定数组升级为动态 ArrayList 管理矩形对象

酷伟酱_9320

酷伟酱_9320

2026-04-13

503人浏览

原创

本文详解如何将 Rectangle[] 数组替换为 ArrayList,实现灵活创建、存储与遍历矩形对象,并保持面积与周长计算功能完整。

本文详解如何将 `rectangle[]` 数组替换为 `arraylist`,实现灵活创建、存储与遍历矩形对象,并保持面积与周长计算功能完整。

在 Java 中,使用 ArrayList 替代固定长度数组(如 Rectangle[3])可显著提升程序的灵活性与可扩展性——无需预设数量,支持运行时动态增删元素。以下是完整的迁移方案与最佳实践:

✅ 步骤一:声明泛型 ArrayList,明确类型安全

将原数组声明:

Rectangle[] rectangles = new Rectangle[3];

替换为类型安全的 ArrayList:

import java.util.ArrayList;
import java.util.List;

List<rectangle> rectangles = new ArrayList(); // 推荐使用接口类型 List</rectangle>

✅ 优势:无需指定初始容量(可选传入如 new ArrayList(5) 优化性能),自动扩容,语义更清晰。

✅ 步骤二:用 while 循环替代 for,支持用户驱动的动态创建

不再硬编码循环次数,而是由用户决定是否继续添加:

Scanner input = new Scanner(System.in);
boolean continueInput = true;

while (continueInput) {
    System.out.println("Do you want to enter width and height for a new rectangle? (Y/N)");
    String choice = input.next().trim().toLowerCase();

    if (choice.equals("y") || choice.equals("yes")) {
        try {
            double width = input.nextDouble();
            double height = input.nextDouble();
            rectangles.add(new Rectangle(width, height)); // 直接添加新实例
        } catch (Exception e) {
            System.out.println("Invalid input. Please enter numeric values.");
            input.nextLine(); // 清除错误输入缓冲区
        }
    } else if (choice.equals("n") || choice.equals("no")) {
        continueInput = false;
    } else {
        System.out.println("Please enter 'Y' or 'N'.");
        input.nextLine(); // 消费非法字符
    }
}

⚠️ 注意:务必加入异常处理(如 InputMismatchException),避免因非数字输入导致程序崩溃;input.nextLine() 可防止后续 nextLine() 被跳过。

✅ 步骤三:使用增强 for 循环遍历并输出结果

原基于索引的遍历:

for (int i = 0; i <p>升级为简洁、安全的 for-each 遍历:</p><pre class="brush:php;toolbar:false;">System.out.println("The rectangles are:");
int index = 1;
for (Rectangle rect : rectangles) {
    System.out.printf("Rectangle %d: width = %.2f, height = %.2f%n", 
                      index++, rect.getWidth(), rect.getHeight());
    System.out.printf("Area = %.2f, Perimeter = %.2f%n", 
                      rect.getArea(), rect.getPerimeter());
}

✅ 优势:避免越界异常,代码更易读;配合 printf 提升数值格式化体验。

? 进阶建议:增强 Rectangle 类的唯一标识能力

若需区分多个矩形(尤其在列表无序或重复时),推荐在 Rectangle 类中引入唯一 ID:

public class Rectangle {
    private final UUID id;
    private final double width;
    private final double height;

    public Rectangle() {
        this(UUID.randomUUID(), 1.0, 1.0);
    }

    public Rectangle(double width, double height) {
        this(UUID.randomUUID(), width, height);
    }

    public Rectangle(UUID id, double width, double height) {
        this.id = id;
        this.width = width;
        this.height = height;
    }

    // getters...
}

这样可在输出中展示真实标识符:

System.out.printf("Rectangle [ID: %s]: width = %.2f, height = %.2f%n", 
                  rect.getId(), rect.getWidth(), rect.getHeight());

✅ 总结

  • ✅ 核心替换:Rectangle[] → List + new ArrayList()
  • ✅ 输入控制:while 循环 + 用户确认机制,取代硬编码长度
  • ✅ 安全遍历:优先使用 for-each,避免索引错误
  • ✅ 健壮性:添加输入校验与异常处理,提升用户体验
  • ✅ 可维护性:通过 UUID 或自增 ID 增强对象可追溯性

迁移后,你的程序不仅能处理任意数量的矩形,还具备更强的扩展潜力——例如后续轻松集成排序、过滤、持久化等操作。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

12157

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

9242

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

7892

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1284

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

1028

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1536

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

3189

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20431

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1395

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习