|
@@ -0,0 +1,322 @@
|
|
|
|
+package com.sf.day14.exercisequestions;
|
|
|
|
+
|
|
|
|
+import com.sf.day14.exercisequestions.model.*;
|
|
|
|
+import org.junit.Test;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Scanner;
|
|
|
|
+import java.util.function.Consumer;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+public class Test01 {
|
|
|
|
+ /**
|
|
|
|
+ * 练习题 7
|
|
|
|
+ * 7:(List)编程:创建一个工人类,属性:姓名、年龄、工资,要求如下:
|
|
|
|
+ * ①为Worker 提供无、有参数的构造方法,属性私有,并提供公开的 get/set
|
|
|
|
+ * <p>
|
|
|
|
+ * ②创建多个Worker 类,存储在List 集合中。
|
|
|
|
+ * <p>
|
|
|
|
+ * ③打印输出所有的工人信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ④计算所有工人的平均工资。
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑤打印输出姓名中包含 "胡" 的所有工人信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑥打印输出所有姓 "胡" 的工人信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑦键盘输入一个姓名,查找是否存在此员工,存在,则打印输出员工的信息, 如果不存在,则输出"查 无此人"
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑧输入一个工资,查询工资 大于 输入工资的员工信息。
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t1() {
|
|
|
|
+ List<Worker> list = new ArrayList<>();
|
|
|
|
+ list.add(new Worker("张三", 18, 2000));
|
|
|
|
+ list.add(new Worker("李四", 19, 3000));
|
|
|
|
+ list.add(new Worker("王五", 20, 4000));
|
|
|
|
+ list.add(new Worker("赵胡麻", 21, 5000));
|
|
|
|
+ list.add(new Worker("胡八一", 22, 6000));
|
|
|
|
+ list.forEach(o -> System.out.println(o + " "));
|
|
|
|
+
|
|
|
|
+ System.out.println();
|
|
|
|
+ System.out.println();
|
|
|
|
+ System.out.println("---------------------------");
|
|
|
|
+
|
|
|
|
+ double average = 0;
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ average += list.get(i).getSalary();
|
|
|
|
+ String s = String.valueOf(list.get(i));
|
|
|
|
+ if (s.contains("胡")) {
|
|
|
|
+ System.out.println(list.get(i));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println();
|
|
|
|
+ System.out.println("平均工资为:" + average / 5);
|
|
|
|
+ String string = String.valueOf(list);
|
|
|
|
+ char[] chars = string.toCharArray();
|
|
|
|
+ for (int i = 0; i < chars.length; i++) {
|
|
|
|
+ if (String.valueOf(chars[i]).equals("胡")) {
|
|
|
|
+ System.out.println(chars[i]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Scanner sc = new Scanner(System.in);
|
|
|
|
+ System.out.println("请输入名字");
|
|
|
|
+ String s1 = sc.next();
|
|
|
|
+ boolean boo = false;
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ if (s1.equals(list.get(i).getName())) {
|
|
|
|
+ System.out.println(list.get(i));
|
|
|
|
+ boo = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!boo) {
|
|
|
|
+ System.out.println("不存在");
|
|
|
|
+ }
|
|
|
|
+ System.out.println("请输入工资");
|
|
|
|
+ double d = sc.nextInt();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ if (d < list.get(i).getSalary()) {
|
|
|
|
+ System.out.println(list.get(i));
|
|
|
|
+ boo = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!boo) {
|
|
|
|
+ System.out.println("不存在");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 练习题8
|
|
|
|
+ * 8:(List)编程:已知有 Worker 类,属性为姓名、年龄、工资,完成类的封装并提供无参数、有参数构造方法,完成以下要求:
|
|
|
|
+ * ①创建一个List,在List 中增加三个工人,基本信息如下 :
|
|
|
|
+ * <p>
|
|
|
|
+ * 姓名 年龄 工资
|
|
|
|
+ * <p>
|
|
|
|
+ * zhang3 18 3000
|
|
|
|
+ * <p>
|
|
|
|
+ * li4 25 3500
|
|
|
|
+ * <p>
|
|
|
|
+ * Wang5 22 3200
|
|
|
|
+ * <p>
|
|
|
|
+ * ②在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资 3300
|
|
|
|
+ * <p>
|
|
|
|
+ * ③删除wang5 的信息
|
|
|
|
+ * <p>
|
|
|
|
+ * ④利用下标遍历,打印输出所有工人信息
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑤利用forEach 遍历,打印输出所有年龄大于 20 的工人信息
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑥对Worker 类添加eqauls 方法
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t2() {
|
|
|
|
+ List list = new ArrayList();
|
|
|
|
+ list.add(new Worker1("zhang3", 18, 3000));
|
|
|
|
+ list.add(new Worker1("li4", 25, 3500));
|
|
|
|
+ list.add(new Worker1("wang5", 22, 3200));
|
|
|
|
+ list.add(1, new Worker1("zhao6", 24, 3300));
|
|
|
|
+ list.remove(3);
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ System.out.println(list.get(i));
|
|
|
|
+ }
|
|
|
|
+ System.out.println();
|
|
|
|
+ System.out.println("--------------------------");
|
|
|
|
+ for (Object w : list) {
|
|
|
|
+ Worker1 worker1 = (Worker1) w;
|
|
|
|
+ if (worker1.getAge() > 20) {
|
|
|
|
+ System.out.println(w);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 9:(List) 创建一个商品(Produtor)类,属性:商品名,商品单价,商品的数量,商品产地。
|
|
|
|
+ * ① 创建多个商品对象,存储在List集合中。
|
|
|
|
+ * <p>
|
|
|
|
+ * ② 显示所有的商品信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ③ 打印输出商品价格 > 1000 的所有商品信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ④ 打印售空的商品的信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑤ 打印输出商品产地为"北京"的商品信息。
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑥ 输入一个商品名,查询出此类商品的信息,如果不存在,则打印商品"商场无此商品!!!"
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑦ 输入一个价格段,查询出集合中所有在这个价格区间的所有商品信息。
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t3() {
|
|
|
|
+ List list = new ArrayList();
|
|
|
|
+ list.add(new Produtor("小米", 4999, 99, "北京"));
|
|
|
|
+ list.add(new Produtor("红米", 999, 88, "杭州"));
|
|
|
|
+ list.add(new Produtor("华为", 6999, 0, "北京"));
|
|
|
|
+ list.add(new Produtor("苹果", 10099, 9999, "America"));
|
|
|
|
+ list.add(new Produtor("杂牌", 100, 999999, "华强北"));
|
|
|
|
+
|
|
|
|
+ list.forEach(new Consumer() {
|
|
|
|
+ @Override
|
|
|
|
+ public void accept(Object o) {
|
|
|
|
+ System.out.println(o + "");
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ System.out.println();
|
|
|
|
+ System.out.println("------------");
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Produtor produtor = (Produtor) list.get(i);
|
|
|
|
+ if (produtor.getPrice() > 1000) {
|
|
|
|
+ System.out.println(produtor);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ System.out.println();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Produtor produtor = (Produtor) list.get(i);
|
|
|
|
+ if (produtor.getNum() == 0) {
|
|
|
|
+ System.out.println("售空产品为:" + produtor);
|
|
|
|
+ }
|
|
|
|
+ if (produtor.getProduction().equals("北京")) {
|
|
|
|
+ System.out.println(produtor);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ System.out.println();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Produtor produtor = (Produtor) list.get(i);
|
|
|
|
+
|
|
|
|
+ if (produtor.getProduction().equals("北京")) {
|
|
|
|
+ System.out.println(produtor);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ System.out.println("请输入商品名:");
|
|
|
|
+ String name = scanner.next();
|
|
|
|
+ boolean boo = false;
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Produtor produtor = (Produtor) list.get(i);
|
|
|
|
+ if (produtor.getName().equals(name)) {
|
|
|
|
+ System.out.println(produtor);
|
|
|
|
+ boo = true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!boo) {
|
|
|
|
+ System.out.println("不存在");
|
|
|
|
+ }
|
|
|
|
+ System.out.println("输入低价");
|
|
|
|
+
|
|
|
|
+ double price1 = scanner.nextInt();
|
|
|
|
+ System.out.println("输入高价");
|
|
|
|
+ double price2 = scanner.nextInt();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Produtor produtor = (Produtor) list.get(i);
|
|
|
|
+ if (produtor.getPrice() >= price1 && produtor.getPrice() <= price2) {
|
|
|
|
+ System.out.println(produtor);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 10:(List)定义一个用户类(User):---要求封装
|
|
|
|
+ * ① 属性:用户名、密码、是否在线(是-true)
|
|
|
|
+ * <p>
|
|
|
|
+ * ② 提供有参数、无参数的构造方法
|
|
|
|
+ * <p>
|
|
|
|
+ * ③ 创建多个对象,存储在集合中,并统计在线用户数量,打印在控制台上。
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t4() {
|
|
|
|
+ List list = new ArrayList();
|
|
|
|
+ list.add(new User("张三", "123", true));
|
|
|
|
+ list.add(new User("李四", "312", false));
|
|
|
|
+ list.add(new User("王五", "456", true));
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ User u = (User) list.get(i);
|
|
|
|
+ if (u.isZaixian() == true) {
|
|
|
|
+ System.out.println(u);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 11:(List)定义一个员工类(Employee):---要求封装
|
|
|
|
+ * ① 属性:姓名,生日月,工资
|
|
|
|
+ * <p>
|
|
|
|
+ * ② 提供无参数\有参数的构造方法
|
|
|
|
+ * <p>
|
|
|
|
+ * ③ 创建多个员工对象,存储在Employee数组中.
|
|
|
|
+ * <p>
|
|
|
|
+ * ④ 利用toString方法展示所有员工的信息,要求格式为: 张三-10-18000.0
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑤ 控制台输入当前月份,统计过生日的员工数量.
|
|
|
|
+ * <p>
|
|
|
|
+ * ⑥ 控制台输入一个工资,打印工资高于此工资的所有员工信息.
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t5() {
|
|
|
|
+ List list = new ArrayList();
|
|
|
|
+ list.add(new Employee("张三", 10, 10000));
|
|
|
|
+ list.add(new Employee("李四", 9, 20000));
|
|
|
|
+ list.add(new Employee("王五", 8, 30000));
|
|
|
|
+ list.add(new Employee("赵六", 7, 40000));
|
|
|
|
+ Scanner sc = new Scanner(System.in);
|
|
|
|
+ System.out.println("请输入当前月份");
|
|
|
|
+ int month = sc.nextInt();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Employee e = (Employee) list.get(i);
|
|
|
|
+ if (e.getBirthday() == month) {
|
|
|
|
+ System.out.println(e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println("请输入工资:");
|
|
|
|
+ double d = sc.nextInt();
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ Employee e = (Employee) list.get(i);
|
|
|
|
+ if (e.getSalary() > d) {
|
|
|
|
+ System.out.println(e);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 12:(List)在控制台输入格式为“张三/18/男/99.5”的学生若干,存于List集合中。
|
|
|
|
+ * 要求:
|
|
|
|
+ * <p>
|
|
|
|
+ * ①从数组遍历所有内容解析为学生对象,将学生在存于一个新的List集合
|
|
|
|
+ */
|
|
|
|
+ @Test
|
|
|
|
+ public void t6() {
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ List<Student> students = new ArrayList<>();
|
|
|
|
+ boolean isRunning = true;
|
|
|
|
+ while (isRunning) {
|
|
|
|
+ System.out.print("请输入学生信息(格式:张三/18/男/99.5,输入exit结束输入):");
|
|
|
|
+ String input = scanner.nextLine();
|
|
|
|
+ if ("exit".equalsIgnoreCase(input)) {
|
|
|
|
+ isRunning = false;
|
|
|
|
+ } else {
|
|
|
|
+ String[] parts = input.split("/");
|
|
|
|
+ if (parts.length == 4) {
|
|
|
|
+ Student student = new Student(parts[0], Integer.parseInt(parts[1]), parts[2], Double.parseDouble(parts[3]));
|
|
|
|
+ students.add(student);
|
|
|
|
+ } else {
|
|
|
|
+ System.out.println("输入格式不正确,请重新输入。");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ scanner.close();
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|