一、实验实训目的和要求

1、掌握List集合对象的创建

2、掌握基于集合的元素添加、元素查询、元素删除、遍历集合等操作

3、掌握集合在项目功能中的应用

4、通过实验体会集合的灵活应用

二、实验实训器材(包括仪器、设备、主要试剂或元器件、软件等)

3.1 计算机设备

操作系统:建议使用 Windows或 macOS 等主流操作系统,确保系统稳定且已安装 Java 开发环境(JDK),JDK 版本建议为Java8、Java 17 或Java 21。

处理器:具备基本的计算处理能力,能够流畅运行 Java 程序。一般来说,普通的笔记本电脑或台式机处理器均可满足需求,如英特尔酷睿系列或 AMD 锐龙系列处理器。

内存:至少 8GB 及以上的内存,以保证在编译和运行 Java 程序时系统不会因内存不足而出现卡顿或异常。

3.2 开发工具

集成开发环境(IDE):推荐使用 IntelliJ IDEA专业的 Java 开发工具,这些 IDE 提供了代码编辑、编译、调试等功能,能够极大地提高开发效率。当然,也可以使用简单的文本编辑器(如 Notepad++、Sublime Text 等)结合命令行工具进行 Java 开发,但对开发者的要求相对较高。

Java 开发工具包(JDK):作为 Java 开发的核心工具包,包含了 Java 编译器(javac)、Java 运行时环境(JRE)等必要的工具和库。确保 JDK 已正确安装并配置好环境变量,以便在命令行或 IDE 中能够正常使用 Java 相关命令。

3.3 其他辅助工具

文档编辑器:用于记录实验过程、回答思考题等,如 Microsoft Word、WPS 文字处理软件等。

截图工具:用于截取程序代码和运行结果图。

三、实验实训内容和主要操作步骤

2.1 验证性实验

1、List编程:创建一个工人类,属性:姓名、年龄、工资,要求如下:

类结构验证:检查 Worker 类是否正确定义了私有属性(姓名、年龄、工资),验证是否提供了无参和有参构造方法,确认所有属性都有对应的 getter 和 setter 方法。

public class Worker {

    // 私有属性

    private String name;

    private int age;

    private double salary;

    

    // 无参构造方法

    public Worker() {}

    

    // 有参构造方法

    public Worker(String name, int age, double salary) {

        this.name = name;

        this.age = age;

        this.salary = salary;

    }

    

    // get/set方法

    public String getName() {

        return name;

    }

    

    public void setName(String name) {

        this.name = name;

    }

    

    public int getAge() {

        return age;

    }

    

    public void setAge(int age) {

        this.age = age;

    }

    

    public double getSalary() {

        return salary;

    }

    

    public void setSalary(double salary) {

        this.salary = salary;

}

 // 重写toString方法,方便打印工人信息

    @Override

public String toString() {

     return "姓名:" + name + ",年龄:" + age + ",工资:" + salary;

}

    

}

2、功能验证:

  1. 程序应能正确创建多个 Worker 对象并存储在 List 集合中
  2. 能完整打印所有工人的信息
  3. 平均工资计算应准确无误
  4. 姓名包含 "胡" 的查询应正确(包含中间或结尾有 "胡" 字的情况)
  5. 姓 "胡" 的查询应只返回以 "胡" 字开头的工人
  6. 键盘输入一个姓名,查找是否存在此员工,存在,则打印输出员工的信息,如果不存在,则输出"查无此人"。
  7. 输入一个工资,查询工资 大于 输入工资的员工信息。

代码如下,请验证上述问题相关功能。

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

public class WorkerTest {

    public static void main(String[] args) {

        // (2) 创建多个Worker类,存储在List集合中

        List<Worker> workers = new ArrayList<>();

        workers.add(new Worker("张三", 30, 5000));

        workers.add(new Worker("胡四", 28, 6000));

        workers.add(new Worker("王五", 35, 7000));

        workers.add(new Worker("胡六六", 40, 8000));

        workers.add(new Worker("赵七", 25, 4500));

        workers.add(new Worker("胡八一", 38, 9000));

        

        // (3) 打印输出所有的工人信息

        System.out.println("(3) 所有工人信息:");

        for (Worker worker : workers) {

            System.out.println(worker);

        }

        

        // (4) 计算所有工人的平均工资

        double totalSalary = 0;

        for (Worker worker : workers) {

            totalSalary += worker.getSalary();

        }

        double avgSalary = totalSalary / workers.size();

        System.out.println("所有工人的平均工资:" + avgSalary);

        

        // (5) 打印输出姓名中包含 "胡" 的所有工人信息

        System.out.println("姓名中包含'胡'的工人信息:");

        for (Worker worker : workers) {

            if (worker.getName().contains("胡")) {

                System.out.println(worker);

            }

        }

        // (6) 打印输出所有姓 "胡" 的工人信息

        System.out.println("姓'胡'的工人信息:");

        for (Worker worker : workers) {

            if (worker.getName().startsWith("胡")) {

                System.out.println(worker);

            }

        }

        // (7) 键盘输入一个姓名,查找是否存在此员工

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入要查找的姓名:");

        String searchName = scanner.nextLine();

        boolean found = false;

        for (Worker worker : workers) {

            if (worker.getName().equals(searchName)) {

                System.out.println("找到该员工:" + worker);

                found = true;

                break;

            }

        }

        if (!found) {

            System.out.println("查无此人");

        }

        // (8) 输入一个工资,查询工资大于输入工资的员工信息

        System.out.println("请输入一个工资:");

        double searchSalary = scanner.nextDouble();

        System.out.println("工资大于" + searchSalary + "的员工信息:");

        for (Worker worker : workers) {

            if (worker.getSalary() > searchSalary) {

                System.out.println(worker);

            }

        }

        scanner.close();

    }

}

2.2 自主设计性实验

2、已知有 User类,属性为姓名、年龄、性别,完成类的封装并提供无参数、有参数构造方法,完成以下要求:

(1) 创建一个 List,在 List 中增加三个User对象

(2) 打印输出集合中所有的女用户信息

(3) 利用自遍历的方式,打印输出用户姓名长度大于 2 的信息

3、创建一个商品(Product)类,属性:商品名,商品单价,商品的数量,商品产地。

(1) 创建多个商品对象,存储在List集合中,集合中不能出现重复商品,商品名相同即为重复,在Product类中添加必要的方法;

(2) 显示所有的商品信息;

(3) 打印输出商品价格 > 1000 的所有商品信息;

(4) 打印售空的商品的信息;

(5) 打印输出商品产地为"北京"的商品信息;

(6) 输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!!!"

(7) 输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。

4、利用 List存储多个整数,例如:19、45、309、21、189,完成以下需求:

(1) 将 集合中所有数据进行打印输出

(2) 将集合中所有的三位数进行打印输出

(3) 计算集合中所有数据的平均值

(4) 打印输出集合中的最大值

(5) 将集合中的所有元素进行倒叙打印输出

5、利用List存储多个字符,例如:’A’、’a’、’s’、’p’、’+’、’X’、’-’,完成以下需求:

(1) 将集合中所有的字符进行拼接,打印拼接结果

(2) 打印输出集合所有的大写字母

(3) 统计集合中非字母的个数,并打印输出

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐