使用List集合专项实验
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、功能验证:
- 程序应能正确创建多个 Worker 对象并存储在 List 集合中
- 能完整打印所有工人的信息
- 平均工资计算应准确无误
- 姓名包含 "胡" 的查询应正确(包含中间或结尾有 "胡" 字的情况)
- 姓 "胡" 的查询应只返回以 "胡" 字开头的工人
- 键盘输入一个姓名,查找是否存在此员工,存在,则打印输出员工的信息,如果不存在,则输出"查无此人"。
- 输入一个工资,查询工资 大于 输入工资的员工信息。
代码如下,请验证上述问题相关功能。
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) 统计集合中非字母的个数,并打印输出
6、根据以下界面提示以及附件源码,设计一个程序,用于管理学生信息。[综合性程序设计]
(附件为TestStudnet.Java)

