2021-08-04 Java练习题

1、存放5个学生的成绩【成绩值自己设定】,获得成绩之和,平均成绩,最小成绩,最大成绩。

package com.listpractice;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 19:05
 * <p>
 * 存放5个学生的成绩【成绩值自己设定】,获得成绩之和,平均成绩,最小成绩,最大成绩。
 */
public class StudentList {
    public static void main(String[] args) {
        Random r = new Random();
        int max = 100;
        int min = 50;
        int sum = 0;
        List list = new ArrayList();
        for (int i = 0; i < 5; i++) {
            int sc = r.nextInt(max) % (max - min + 1) + min;
            list.add(sc);
            sum += sc;
        }
        System.out.println("打印出五名学生的成绩如下:");
        list.forEach((o) -> System.out.println(o));

        System.out.println("成绩之和:" + sum);
        System.out.println("平均成绩:" + (double)(sum / list.size()));
        System.out.println("最小成绩:" + Collections.min(list));
        System.out.println("最大成绩:" + Collections.max(list));
    }
}

2、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?

package com.listpractice;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 19:34
 *
 * B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?
 */
public class Bsong {
    public static void main(String[] args) {
        Random r = new Random();
        int max = 10;
        int min = 5;
        double sum = 0;
        List<Double> list = new ArrayList<Double>();
        for (int i = 0; i < 10; i++) {
            double sc = r.nextInt(max) % (max - min + 1) + min;
            list.add(sc);
            sum += sc;
        }
        System.out.println("平均成绩:" + ((sum- Collections.min(list)- Collections.max(list)) / (list.size()-2)));
    }
}

3、现在有:List oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};要求将以上集合中值为0的项去掉。

package com.listpractice;

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

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 19:53
 * <p>
 * 现在有:
 * List oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
 * 要求将以上集合中值为0的项去掉。
 */
public class RemoveZero {
    public static void main(String[] args) {
        int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < oldArr.length; i++) {
            list.add(oldArr[i]);
        }
        list.removeAll(Collections.singleton(0));
        list.forEach((o) -> System.out.print(o + " "));
    }
}

4、现在给出两个List集合:集合a:"1,7,9,11,13,15,17,19"集合b:"2,4,6,8,10"两个集合合并为集合c。

package com.listpractice;

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

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 20:16
 * <p>
 * 现在给出两个List集合:
 * 集合a:"1,7,9,11,13,15,17,19"
 * 集合b:"2,4,6,8,10"
 * 两个集合合并为集合c。
 */
public class pluslist {
    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(7);
        list1.add(9);
        list1.add(11);
        list1.add(13);
        list1.add(15);
        list1.add(17);
        list1.add(19);
        List<Integer> list2 = new ArrayList<>();
        list2.add(2);
        list2.add(4);
        list2.add(6);
        list2.add(8);
        list2.add(10);
        list1.addAll(list2);
        list1.forEach((i) -> System.out.print(i+" "));
    }
}

5、有如下Student 对象,其中,classNum 表示学生的班号,例如“class05”。 有如下List ,在这个list 的基础上,完成下列要求:,1) 计算所有学生的平均年龄。2) 计算各个班级的平均分 。3) 不分班排序,并输出学生信息。

有如下Student 对象,

private String name;

private int age;

private int score;

private String classNum;

其中,classNum 表示学生的班号,例如“class05”。 有如下List

List list = new ArrayList();

list.add(new Student(“Tom”, 18, 100, “class05”));

list.add(new Student(“Jerry”, 22, 70, “class04”));

list.add(new Student(“Owen”, 25, 90, “class05”));

list.add(new Student(“Jim”, 30,80 , “class05”));

list.add(new Student(“Steve”, 28, 66, “class06”));

list.add(new Student(“Kevin”, 24, 100, “class04”));

在这个list 的基础上,完成下列要求:

1) 计算所有学生的平均年龄

2) 计算各个班级的平均分

3) 不分班排序,并输出学生信息。

排序规则:
按照成绩降序排列;
如果成绩相同,按照年龄升序排列;
如果成绩和年龄都相同,按照姓名降序排列。

package com.listpractice;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 20:22
 * <p>
 * 有如下Student 对象,
 * <p>
 * private String name;
 * <p>
 * private int age;
 * <p>
 * private int score;
 * <p>
 * private String classNum;
 * <p>
 * 其中,classNum 表示学生的班号,例如“class05”。
 */
public class Student {
    private String name;
    private int age;
    private double score;
    private String classNum;

    public Student(String name, int age, double score, String classNum) {
        this.name = name;
        this.age = age;
        this.score = score;
        this.classNum = classNum;
    }

    @Override
    public String toString() {
        return "学生:" +
                "姓名-" + name +
                " 年龄-" + age +
                " 成绩-" + score +
                " 班号-" + classNum;
    }

    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 getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getClassNum() {
        return classNum;
    }

    public void setClassNum(String classNum) {
        this.classNum = classNum;
    }
}

package com.listpractice;

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

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 20:26
 * <p>
 * 在这个list 的基础上,完成下列要求:
 * 1)计算所有学生的平均年龄
 * 2)计算各个班级的平均分
 * 3)不分班排序,并输出学生信息。
 * 排序规则:
 * 按照成绩降序排列;
 * 如果成绩相同,按照年龄升序排列;
 * 如果成绩和年龄都相同,按照姓名降序排列。
 */
public class sortStudent {
    public static void main(String[] args) {
        double sumAge = 0;
        double sum4 = 0;
        double size4 = 0;
        double sum5 = 0;
        double size5 = 0;
        double sum6 = 0;
        double size6 = 0;
        List<Student> list = new ArrayList<>();
        list.add(new Student("Tom", 18, 100, "class05"));
        list.add(new Student("Jerry", 22, 70, "class04"));
        list.add(new Student("Owen", 25, 90, "class05"));
        list.add(new Student("Jim", 30, 80, "class05"));
        list.add(new Student("Steve", 28, 66, "class06"));
        list.add(new Student("Kevin", 24, 100, "class04"));
        for (Student s : list) {
            switch (s.getClassNum()) {
                case "class04":
                    sum4 += s.getScore();
                    size4++;
                    break;
                case "class05":
                    sum5 += s.getScore();
                    size5++;
                    break;
                case "class06":
                    sum6 += s.getScore();
                    size6++;
                    break;
            }
            sumAge += s.getAge();
        }
        System.out.println("学生平均年龄为:" + sumAge / list.size());
        System.out.println("4班学生平均成绩为:" + sum4 / size4);
        System.out.println("5班学生平均成绩为:" + sum5 / size5);
        System.out.println("6班学生平均成绩为:" + sum6 / size6);
        listSort(list);
    }

    public static void listSort(List<Student> list) {
        list.sort((s1, s2) -> {
            if (s1.getScore() < s2.getScore()) {
                return 1;
            } else if (s1.getScore() == s2.getScore() && s1.getAge() > s2.getAge()) {
                return 1;
            } else if (s1.getScore() == s2.getScore() && s1.getAge() == s2.getAge() && s1.getName().compareTo(s2.getName())>0) {
                return 1;
            } else {
                return -1;
            }
        });
        System.out.println("排序后如下:");
        list.forEach(System.out::println);
    }
}
package com.listpractice;

import java.util.*;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 20:26
 * <p>
 * 在这个list 的基础上,完成下列要求:
 * 1)计算所有学生的平均年龄
 * 2)计算各个班级的平均分
 * 3)不分班排序,并输出学生信息。
 * 排序规则:
 * 按照成绩降序排列;
 * 如果成绩相同,按照年龄升序排列;
 * 如果成绩和年龄都相同,按照姓名降序排列。
 */
public class SortStudentX {
    public static void main(String[] args) {
        //集合如下
        List<Student> list = new ArrayList<>();
        list.add(new Student("Tom", 18, 100, "class05"));
        list.add(new Student("Jerry", 22, 70, "class04"));
        list.add(new Student("Owen", 25, 90, "class05"));
        list.add(new Student("Jim", 30, 80, "class05"));
        list.add(new Student("Steve", 28, 66, "class06"));
        list.add(new Student("Kevin", 24, 100, "class04"));

        // 平均年龄
        double sumAge = 0;
        for (Student s : list) {
            sumAge += s.getAge();
        }
        System.out.println("学生平均年龄为:" + sumAge / list.size());

        // Map求各班平均分
        //创建Map集合存放班级名和班级总成绩
        Map<String, Double> cs = new HashMap<>();
        //创建Map集合存放班级名和班级人数
        Map<String, Integer> cn = new HashMap<>();
        //获取一个班级名字判断是否在list集合中出现过
        for (Student s : list) {
            //获取一个班级名字判断是否在list集合中出现过
            String className = s.getClassNum();
            if (cs.containsKey(className)) {
                //该班级名已经存在过,需要把总分数和总人数改变
                double scoreSum = cs.get(className) + s.getScore();
                cs.put(className, scoreSum);
                int stuNum = cn.get(className) + 1;
                cn.put(className, stuNum);
            } else {
                //该班级名没有存在,需要向集合中添加新班级
                cs.put(className, s.getScore());
                cn.put(className, 1);
            }
        }

        /**遍历集合(第一种)
        for (Map.Entry<String, Double> m : cs.entrySet()) {
            String key = m.getKey();//获取班级名
            int stuN = cn.get(key);//获取班级总人数
            double avg = m.getValue() / stuN;//获取平均成绩
            System.out.println(key + "班的平均成绩为:" + avg);
        }*/

        //遍历集合(第二种)
        Set<String> set = cs.keySet();
        for (String s : set) {
            System.out.println(s + "班的平均成绩为:" + cs.get(s) / cn.get(s));
        }

        //排序如下
        sortStudent.listSort(list);
    }
}

6、已知有一个Worker 类如下:完成下面的要求 。

已知有一个Worker 类如下:

public class Worker

{ private int age;

private String name;

private double salary;

public Worker (){}

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

{ this.name = name;

this.age = age;

this.salary = salary; }

public int getAge() { return age; }

public void setAge(int age) { this.age = age; }

public String getName() { return name; }

public void setName(String name) { this.name = name; }

public double getSalary(){ return salary; }

public void setSalary(double salary){ this.salary = salary; }

public void work(){

System.out.println(name + “ work”); } }

完成下面的要求

  1. 创建一个List,在List 中增加三个工人,基本信息如下:

    姓名 年龄 工资

    zhang3 18 3000

    li4 25 3500

    wang5 22 3200

  2. 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300

  3. 删除wang5 的信息

  4. 利用for 循环遍历,打印List 中所有工人的信息

  5. 利用迭代遍历,对List 中所有的工人调用work 方法。

package com.listpractice;

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 22:20
 * <p>
 * 第六题(List)已知有一个Worker 类如下:
 */

public class Worker {
    private int age;

    private String name;

    private double salary;

    public Worker() {
    }

    public Worker(String name, int age, double salary) {
        this.name = name;

        this.age = age;

        this.salary = salary;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void work() {
        System.out.println(name + "work");
    }

    @Override
    public String toString() {
        return "Worker{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                '}';
    }
}
package com.listpractice;

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

/**
 * @author Peter Cheung
 * @user PerCheung
 * @date 2021/8/4 22:22
 * <p>
 * 完成下面的要求
 * <p>
 * 1) 创建一个List,在List 中增加三个工人,基本信息如下:
 * <p>
 * 姓名 年龄 工资
 * <p>
 * zhang3 18 3000
 * <p>
 * li4 25 3500
 * <p>
 * wang5 22 3200
 * <p>
 * 2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
 * <p>
 * 3) 删除wang5 的信息
 * <p>
 * 4) 利用for 循环遍历,打印List 中所有工人的信息
 * <p>
 * 5) 利用迭代遍历,对List 中所有的工人调用work 方法。
 */
public class workList {
    public static void main(String[] args) {
        List<Worker> list = new ArrayList<>();
        list.add(new Worker("zhang3", 18, 3000));
        list.add(new Worker("li4", 25, 3500));
        list.add(new Worker("wang5", 22, 3200));
        list.add(1, new Worker("zhao6", 24, 3300));

        list.remove(3);

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        Iterator<Worker> i = list.iterator();
        while (i.hasNext()) {
            Worker w = i.next();
            w.work();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PerCheung

觉得有帮助的话就打赏支持一下吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值