2021-08-04 Java练习题目录:
- 1、存放5个学生的成绩【成绩值自己设定】,获得成绩之和,平均成绩,最小成绩,最大成绩。
- 2、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?
- 3、现在有:List oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};要求将以上集合中值为0的项去掉。
- 4、现在给出两个List集合:集合a:"1,7,9,11,13,15,17,19"集合b:"2,4,6,8,10"两个集合合并为集合c。
- 5、有如下Student 对象,其中,classNum 表示学生的班号,例如“class05”。 有如下List ,在这个list 的基础上,完成下列要求:,1) 计算所有学生的平均年龄。2) 计算各个班级的平均分 。3) 不分班排序,并输出学生信息。
- 6、已知有一个Worker 类如下:完成下面的要求 。
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”); } }
完成下面的要求
-
创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
-
在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
-
删除wang5 的信息
-
利用for 循环遍历,打印List 中所有工人的信息
-
利用迭代遍历,对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();
}
}
}