Java中ArrayList与自定义对象:构建随机半径Circle列表的教程

夜强同学_5171

夜强同学_5171

2025-11-22

975人浏览

原创

Java中ArrayList与自定义对象:构建随机半径Circle列表的教程

本教程详细讲解如何在java中使用`arraylist`动态创建和管理自定义的`circle`对象列表。内容涵盖`circle`类的设计与实现,包括属性和计算方法;利用`random`类生成指定范围内的随机半径来实例化`circle`对象,并通过`for`循环将其添加到`arraylist`;最后,演示如何遍历列表并使用`string.format()`方法精确控制输出的浮点数格式。

在Java编程中,经常需要处理一组具有相同特性但不同属性的对象。ArrayList作为Java集合框架的一部分,提供了一种灵活的方式来存储和管理这些对象的动态列表。本教程将以“圆形(Circle)”对象为例,演示如何结合ArrayList和随机数生成来构建一个包含多个随机半径圆形的列表,并对其属性进行格式化输出。

核心组件:Circle类的设计与实现

要创建Circle对象的列表,首先需要定义Circle类。这个类将封装一个圆形的属性(如ID和半径)以及与其相关的行为(如计算直径、面积和周长)。

1. 类属性

一个Circle对象至少应包含以下属性:

  • id (String): 用于唯一标识每个圆形,例如"C1", "C2"等。
  • radius (double): 圆形的半径。

2. 构造函数

为了方便地创建Circle对象并初始化其属性,我们需要一个构造函数。

public Circle(String id, double radius) {
    this.id = id;
    this.radius = radius;
}

3. Getter 方法

为了能够访问Circle对象的私有属性,需要提供相应的getter方法。

public String getId() {
    return id;
}

public double getRadius() {
    return radius;
}

4. 计算方法

Circle类还应包含计算其几何属性的方法,例如直径、面积和周长。这里我们使用近似值 3.14 作为圆周率。

public double getDiameter() {
    return radius * 2;
}

public double getArea() {
    return 2 * 3.14 * radius * radius; // 注意:此处面积计算公式为 2 * PI * r^2,标准面积公式为 PI * r^2
}

public double getCircumference() {
    return 2 * 3.14 * radius;
}

完整的Circle类代码如下:

class Circle {
    private String id;
    private double radius = 0; // 默认值

    public Circle(String id, double radius) {
        this.id = id;
        this.radius = radius;
    }

    public String getId() {
        return id;
    }

    public double getRadius() {
        return radius;
    }

    public double getDiameter() {
        return radius * 2;
    }

    public double getArea() {
        return 2 * 3.14 * radius * radius; // 依照原始示例,标准面积公式为 Math.PI * radius * radius;
    }

    public double getCircumference() {
        return 2 * 3.14 * radius;
    }
}

注意事项:在实际开发中,计算圆的面积通常使用 Math.PI * radius * radius,而不是 2 * 3.14 * radius * radius。本教程为了与提供的示例代码保持一致,沿用了 2 * 3.14 的写法。

动态列表构建:使用ArrayList管理Circle对象

有了Circle类,我们就可以在主程序中创建并管理这些对象了。ArrayList是实现这一目标的理想选择。

1. 初始化ArrayList

在main方法中,首先需要导入必要的类(ArrayList和Random),然后创建一个ArrayList实例,指定它将存储Circle类型的对象。

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner; // 尽管Scanner在此示例中未直接使用,但通常用于用户输入

public class CirclesDriver {
    public static void main(String[] args) {
        Random rand = new Random();
        ArrayList<circle> circles = new ArrayList();
        // ... 其他代码
    }
}</circle>

2. 随机数生成与列表填充

教程要求创建10个圆形,每个圆形具有2到5之间的随机半径。这需要使用Random类和for循环。

Java调试
Java调试

通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。 术语注解 JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议) remote JVM:远程 Java 虚拟机 step through code:代码单步调试(步入 / 步过 / 步出调试) inspect variables:变量查看 / 变量检视 stac

下载
  • 生成指定范围内的随机数:Random类的nextDouble()方法返回一个介于0.0(包含)和1.0(不包含)之间的double值。要生成一个在特定范围[min, max)内的随机数,可以使用公式:min + (rand.nextDouble() * (max - min))。在本例中,min为2,max为5。

  • 循环创建并添加对象:使用for循环迭代10次,每次循环:

    1. 生成一个唯一的ID(例如"C1", "C2")。
    2. 计算一个随机半径。
    3. 使用ID和半径创建一个新的Circle对象。
    4. 将新创建的Circle对象添加到ArrayList中。
// ** load the array list with circles **
for (int i = 1; i <h3>数据展示:遍历与格式化输出</h3><p>填充完ArrayList后,下一步是遍历列表并打印每个Circle对象的详细信息。为了使输出更具可读性,特别是对于浮点数,我们需要进行格式化。</p><h4>1. 遍历ArrayList</h4><p>可以使用增强型for循环或传统的索引for循环来遍历ArrayList。这里我们使用传统的索引for循环,因为它在某些场景下提供了更大的灵活性(例如,需要知道当前元素的索引)。</p><pre class="brush:php;toolbar:false;">for (int i = 0; i <h4>2. 浮点数格式化输出</h4><p>问题要求将圆的尺寸打印到小数点后三位。String.format()方法可以实现这一功能。"%.3f"是一个格式说明符,表示一个浮点数,保留三位小数。</p><pre class="brush:php;toolbar:false;">System.out.println("Circle ID: " + circle.getId());
System.out.println("Radius: " + String.format("%.3f", circle.getRadius()));
System.out.println("Diameter: " + String.format("%.3f", circle.getDiameter()));
System.out.println("Circumference: " + String.format("%.3f", circle.getCircumference()));
System.out.println("Area: " + String.format("%.3f", circle.getArea()));

完整的打印列表代码如下:

System.out.println("--------------------------------\n");

// 遍历并打印所有Circle的详细信息
for(int i=0; i<circles.size i circle system.out.println id: circle.getid string.format circle.getradius circle.getdiameter circle.getcircumference circle.getarea><h3>完整示例代码</h3>
<p>将CirclesDriver类和Circle类整合在一起,形成一个完整的可运行程序。</p>
<pre class="brush:php;toolbar:false;">import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class CirclesDriver {
    public static void main(String[] args) {
        Random rand = new Random();
        // ** Variables constants and objects **
        // Scanner scanner = new Scanner(System.in); // 在此示例中未使用,可根据需要保留或删除
        ArrayList<circle> circles = new ArrayList();

        // ** load the array list with circles **
        for (int i = 1; i <h3>总结与最佳实践</h3>
<p>本教程演示了在Java中结合<a style="color:#f60; text-decoration:underline;" title="面向对象编程" href="https://m.php.cn/zt/24154.html" target="_blank">面向对象编程</a>和集合框架来解决实际问题。通过Circle类封装数据和行为,并利用ArrayList动态管理对象集合,我们能够高效地创建和操作一组具有随机属性的圆形。</p>
<p><strong>关键点回顾:</strong></p>
<ul>
<li>
<strong>面向对象设计</strong>:将圆形的属性和行为封装在Circle类中,遵循了良好的封装原则。</li>
<li>
<strong>ArrayList的灵活性</strong>:ArrayList提供了动态数组的功能,非常适合存储数量不确定或需要频繁增删的同类型对象。</li>
<li>
<strong>随机数生成</strong>:Random类是生成伪随机数的标准工具,掌握其nextDouble()方法和范围转换公式对于模拟真实世界数据非常有用。</li>
<li>
<strong>输出格式化</strong>:String.format()方法是控制浮点数输出精度和格式的强大工具,能显著提高程序输出的可读性和专业性。</li>
</ul>
<p>通过这些技术,开发者可以构建出更加健壮、灵活且易于维护的Java应用程序。</p></circle>

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

7039

3

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.05

7255

14

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

2025.11.27

362

13

C++ 面向对象编程与设计模式实践
C++ 面向对象编程与设计模式实践

本专题整合了 C++ 面向对象编程的核心机制,涵盖类的定义与访问控制、构造函数与析构函数、拷贝语义与移动语义、继承与虚函数多态、抽象类与接口、运算符重载、友元函数等关键知识点,同时结合单例模式、工厂模式、观察者模式、策略模式等常用设计模式的 C++ 实现,帮助开发者写出结构清晰、易于维护的面向对象代码。

2026.04.09

384

30

Java 面向对象与核心编程机制
Java 面向对象与核心编程机制

系统讲解 Java 面向对象编程的核心知识体系,涵盖类的定义与封装、构造方法与 this/super 关键字、继承与方法重写、多态与向上向下转型、抽象类与接口的区别与设计原则、异常处理机制(try-catch-finally / 自定义异常)、泛型的类型参数与通配符、集合框架(List/Set/Map)的使用与遍历方式,帮助开发者全面掌握 Java 程序设计的核心机制与面向对象思维。

2026.04.17

243

15

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1809

3

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.06.27

1211

7

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

2025.08.29

4408

10

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

2025.10.23

844

4

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习