初学java,请老师您检查下,谢谢老师您辛苦
来源:14-17 测评作业

unbreakable_全栈
2024-12-04
package com.imooc.setHomework;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Set;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
// 定义一个电影类
//class Movie implements Comparable<Movie> {
class Movie {
private String title;
private int year;
private double rating;
public Movie(String title, int year, double rating) {
this.title = title;
this.year = year;
this.rating = rating;
}
public void setTitle(String title) {
this.title = title;
}
public void setYear(int year) {
this.year = year;
}
public void setRating(double rating) {
this.rating = rating;
}
public String getTitle() {
return title;
}
public int getYear() {
return year;
}
public double getRating() {
return rating;
}
@Override
public String toString() {
return "电影名称: " + title +
"\t上映年份: " + year +
"\t豆瓣评分: " + rating;
}
// @Override
// public int compareTo(Movie other) {
// return this.year - other.year;
// }
}
class Song {
private String name; // 歌曲名
private String singer; // 歌手
private String album; // 专辑
public Song(String name, String singer, String album) {
this.name = name;
this.singer = singer;
this.album = album;
}
public Song() {
}
public void setName(String name) {
this.name = name;
}
public void setSinger(String singer) {
this.singer = singer;
}
public void setAlbum(String album) {
this.album = album;
}
public String getName() {
return name;
}
public String getSinger() {
return singer;
}
public String getAlbum() {
return album;
}
@Override
public String toString() {
return String.format("%s - %s (%s)", name, singer, album);
}
}
public class setHomework {
public static void main(String[] args) {
// 1、将以下电影存储到 list 集合中,并统计电影数量
MovieList();
System.out.println("第一题结束");
// 2、使用 list 集合整理音乐播放列表
MusicPlaylistManager();
System.out.println("第二题结束");
// 3、将电影添加到集合中,并遍历集合
MovieCollection();
System.out.println("第三题结束");
// 4、在“第3题”的基础上,修改集合元素
MovieCollectionFour();
System.out.println("第四题结束");
// 5、在“第4题”的基础上,删除集合元素
MovieCollectionFive();
System.out.println("第五题结束");
// 6、投票统计
VotingStatistics();
System.out.println("第六题结束");
// 7、图书管理
BookManager();
System.out.println("第七题结束");
// 8、管理手机库存
MobileInventoryManager();
System.out.println("第八题结束");
// 9、查看班级平均成绩
GradeAverageCalculator();
}
/**
* 9、查看班级平均成绩
*/
public static void GradeAverageCalculator () {
// 存储每个班级的语文、数学和英语成绩
Map<Integer, Map<String, List<Double>>> grades = new HashMap<>();
// 添加五个班级的成绩数据
addGrades(grades, 1, "语文", 96.5, 85.4, 88.2, 90.1, 92.3);
addGrades(grades, 1, "数学", 98.8, 89.2, 91.0, 93.4, 95.6);
addGrades(grades, 1, "英语", 95.2, 87.5, 89.3, 91.7, 93.1);
addGrades(grades, 2, "语文", 96.7, 87.2, 89.5, 91.8, 93.4);
addGrades(grades, 2, "数学", 97.5, 88.7, 90.4, 92.6, 94.8);
addGrades(grades, 2, "英语", 96.5, 87.9, 89.7, 91.9, 93.6);
addGrades(grades, 3, "语文", 95.3, 86.1, 88.6, 90.8, 92.4);
addGrades(grades, 3, "数学", 97.9, 89.3, 91.1, 93.5, 95.7);
addGrades(grades, 3, "英语", 94.8, 86.4, 88.9, 91.2, 93.6);
addGrades(grades, 4, "语文", 94.6, 85.7, 87.9, 90.3, 92.5);
addGrades(grades, 4, "数学", 96.4, 87.8, 90.0, 92.3, 94.5);
addGrades(grades, 4, "英语", 93.7, 85.2, 87.6, 90.0, 92.3);
addGrades(grades, 5, "语文", 93.8, 84.5, 86.7, 89.1, 91.4);
addGrades(grades, 5, "数学", 95.1, 86.9, 89.2, 91.5, 93.8);
addGrades(grades, 5, "英语", 92.6, 84.3, 86.5, 89.8, 91.9);
// 计算并打印平均分
printAverages(grades);
}
// 添加单个班级的成绩
public static void addGrades(Map<Integer, Map<String, List<Double>>> grades, int gradeLevel, String subject, Double... scores) {
grades.computeIfAbsent(gradeLevel, k -> new HashMap<>()).computeIfAbsent(subject, k -> new ArrayList<>()).addAll(Arrays.asList(scores));
}
// 计算并打印平均分
public static void printAverages(Map<Integer, Map<String, List<Double>>> grades) {
for (Integer gradeLevel : grades.keySet()) {
Map<String, List<Double>> subjects = grades.get(gradeLevel);
for (String subject : subjects.keySet()) {
double averageScore = calculateAverage(subjects.get(subject));
System.out.println("年级 " + gradeLevel + " 班 " + subject + " 平均分: " + averageScore);
}
}
}
// 计算某个科目的平均分
public static double calculateAverage(List<Double> scores) {
double sum = 0;
for (double score : scores) {
sum += score;
}
return sum / scores.size();
}
/**
* 8、管理手机库存
*/
public static void MobileInventoryManager () {
// 初始化手机库存信息
Map<String, Map<String, Integer>> inventory = new HashMap<>();
// 华为手机库存
Map<String, Integer> huaweiModels = new HashMap<>();
huaweiModels.put("Pura70", 0);
huaweiModels.put("Mate60", 0);
huaweiModels.put("Mate60Pro", 0);
inventory.put("华为", huaweiModels);
// 小米手机库存
Map<String, Integer> xiaomiModels = new HashMap<>();
xiaomiModels.put("mi5s", 0);
xiaomiModels.put("xiaomi13", 65);
xiaomiModels.put("Redmi Note13", 27);
inventory.put("小米", xiaomiModels);
// 执行操作1:清空库存全为0的品牌
inventory.entrySet().removeIf(entry -> entry.getValue().values().stream().allMatch(quantity -> quantity == 0));
// 打印更新后的库存情况
System.out.println("After removing brands with no stock:");
for (Map.Entry<String, Map<String, Integer>> brandEntry : inventory.entrySet()) {
if (!brandEntry.getValue().isEmpty()) {
System.out.println(brandEntry.getKey() + ": " + brandEntry.getValue());
}
}
// 执行操作2:删除品牌中已停产的手机型号
for (Map.Entry<String, Map<String, Integer>> entry : inventory.entrySet()) {
entry.getValue().keySet().removeIf("mi5s"::equals); // 假设"mi5s"是唯一停产型号
}
// 再次打印更新后的库存情况
System.out.println("\nAfter removing discontinued model 'mi5s':");
for (Map.Entry<String, Map<String, Integer>> brandEntry : inventory.entrySet()) {
if (!brandEntry.getValue().isEmpty()) {
System.out.println(brandEntry.getKey() + ": " + brandEntry.getValue());
}
}
}
/**
* 7、图书管理
* 运行代码时,它将创建三个List分别代表不同类别的书籍,然后将这些List作为值与相应的类别名称(如"古典文学"、“近代文学”、“科幻小说”)一起放入HashMap中。
* 最后,它会遍历Map并打印出每个类别及其对应的书籍列表
*/
public static void BookManager () {
// 创建书籍列表
List<String> classicalLiteratureBooks = new ArrayList<>();
classicalLiteratureBooks.add("水浒传");
classicalLiteratureBooks.add("三国演义");
classicalLiteratureBooks.add("红楼梦");
classicalLiteratureBooks.add("西游记");
List<String> modernLiteratureBooks = new ArrayList<>();
modernLiteratureBooks.add("繁星");
modernLiteratureBooks.add("春水");
modernLiteratureBooks.add("边城");
modernLiteratureBooks.add("朝花夕拾");
List<String> scienceFictionBooks = new ArrayList<>();
scienceFictionBooks.add("沙丘");
scienceFictionBooks.add("流浪地球");
scienceFictionBooks.add("宇宙往事");
scienceFictionBooks.add("三体");
scienceFictionBooks.add("银河帝国");
scienceFictionBooks.add("死神永生");
// 创建Map集合
Map<String, List<String>> bookCategories = new HashMap<>();
bookCategories.put("古典文学", classicalLiteratureBooks);
bookCategories.put("近代文学", modernLiteratureBooks);
bookCategories.put("科幻小说", scienceFictionBooks);
// 打印每种类别的书籍
for (Map.Entry<String, List<String>> entry : bookCategories.entrySet()) {
String category = entry.getKey();
List<String> books = entry.getValue();
System.out.print(category + ": [");
for (int i = 0; i < books.size(); i++) {
if (i > 0) {
System.out.print(", ");
}
System.out.print(books.get(i));
}
System.out.println("]");
}
}
/**
* 6、投票统计
*/
public static void VotingStatistics () {
// 使用HashSet来存储投票者的名字,避免重复投票
Set<String> saturdayVotes = new HashSet<>();
Set<String> sundayVotes = new HashSet<>();
// 初始化投票结果
saturdayVotes.add("小慕");
saturdayVotes.add("Lily");
saturdayVotes.add("Lucy");
saturdayVotes.add("大毛");
saturdayVotes.add("Tony");
saturdayVotes.add("小刚");
// 注意这里小慕和大毛重复投票,但由于HashSet的特性,这些重复的投票会被忽略
sundayVotes.add("Tom");
sundayVotes.add("彭彭");
sundayVotes.add("Kate");
// 注意这里彭彭重复投票,但同样会被忽略
// 二毛取消参加,从投票中移除
sundayVotes.remove("二毛");
// Lily 和 Lucy 改投周日的票
saturdayVotes.remove("Lily");
saturdayVotes.remove("Lucy");
sundayVotes.add("Lily");
sundayVotes.add("Lucy");
// 输出投票结果
System.out.println("周六去的人数:" + saturdayVotes.size());
System.out.println("周日去的人数:" + sundayVotes.size());
// 如果需要查看具体投票的人,可以遍历HashSet
System.out.println("周六投票的人有:");
for (String voter : saturdayVotes) {
System.out.println(voter);
}
System.out.println("周日投票的人有:");
for (String voter : sundayVotes) {
System.out.println(voter);
}
}
/**
* 5、在“第4题”的基础上,删除集合元素
* 删除集合元素 经过前面的修改,movieList 集合中现在有 7 个元素,将评分低于 9.5 分的电影从集合中删除。
*/
public static void MovieCollectionFive () {
// 创建一个电影信息的列表
List<Movie> movies = new ArrayList<>();
// 添加电影到列表中
movies.add(new Movie("肖申克的救赎", 1994, 9.7));
movies.add(new Movie("阿甘正传", 1994, 9.5));
movies.add(new Movie("千与千寻", 2001, 9.4));
movies.add(new Movie("星际穿越", 2014, 9.4));
movies.add(new Movie("楚门的世界", 1998, 9.5));
movies.add(new Movie("放牛班的春天", 2004, 9.3));
movies.add(new Movie("当幸福来敲门", 2006, 9.2));
// 删除集合的最后一个元素
if (!movies.isEmpty()) {
movies.remove(movies.size() - 1);
}
// 将电影《楚门的世界》的评分改成 9.5 分
for (Movie movie : movies) {
if ("楚门的世界".equals(movie.getTitle())) {
movie.setRating(9.5);
break;
}
}
// 在第2个元素位置添加电影信息
movies.add(1, new Movie("霸王别姬", 1993, 9.6));
// 删除评分低于 9.5 分的电影
Iterator<Movie> iterator = movies.iterator();
while (iterator.hasNext()) {
Movie movie = iterator.next();
if (movie.getRating() < 9.5) {
iterator.remove();
}
}
// 遍历电影列表并打印每部电影的详细信息
for (Movie movie : movies) {
System.out.println(movie);
}
}
/**
* 4、在“第3题”的基础上,修改集合元素
* 问题:在第2个元素位置,添加以下电影信息,是不是应该添加到 肖申克的救赎 的后边
*/
public static void MovieCollectionFour () {
// 创建一个电影信息的列表
List<Movie> movies = new ArrayList<>();
// 添加电影到列表中
movies.add(new Movie("肖申克的救赎", 1994, 9.7));
movies.add(new Movie("阿甘正传", 1994, 9.5));
movies.add(new Movie("千与千寻", 2001, 9.4));
movies.add(new Movie("星际穿越", 2014, 9.4));
movies.add(new Movie("楚门的世界", 1998, 9.4));
movies.add(new Movie("放牛班的春天", 2004, 9.3));
movies.add(new Movie("当幸福来敲门", 2006, 9.2));
// 删除集合的最后一个元素
if (!movies.isEmpty()) {
movies.remove(movies.size() - 1);
}
// 在第2个元素位置添加电影信息
movies.add(1, new Movie("霸王别姬", 1993, 9.6));
// 将电影《楚门的世界》的评分改成 9.5 分
for (Movie movie : movies) {
if ("楚门的世界".equals(movie.getTitle())) {
movie.setRating(9.5);
break;
}
}
// 遍历电影列表并打印每部电影的详细信息
// Collections.sort(movies); // Sort the list by year before printing
for (Movie movie : movies) {
System.out.println(movie);
}
}
/**
* 3、将电影添加到集合中,并遍历集合
*/
public static void MovieCollection () {
// 创建一个电影信息的列表
List<Movie> movies = new ArrayList<>();
// 添加电影到列表中
movies.add(new Movie("肖申克的救赎", 1994, 9.7));
movies.add(new Movie("阿甘正传", 1994, 9.5));
movies.add(new Movie("千与千寻", 2001, 9.4));
movies.add(new Movie("星际穿越", 2014, 9.4));
movies.add(new Movie("楚门的世界", 1998, 9.4));
movies.add(new Movie("放牛班的春天", 2004, 9.3));
movies.add(new Movie("当幸福来敲门", 2006, 9.2));
// 遍历电影列表并打印每部电影的详细信息
for (Movie movie : movies) {
System.out.println(movie);
}
}
private static void displaySongs(List<Song> songs) {
for (int i = 0; i < songs.size(); i++) {
System.out.printf("%d. %s\n", i + 1, songs.get(i));
}
}
/**
* 2、使用 list 集合整理音乐播放列表
*/
public static void MusicPlaylistManager () {
List<Song> songs = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
// 初始化歌曲列表
songs.add(new Song("又见炊烟", "王菲", "菲常传奇"));
songs.add(new Song("可能", "程响", "可能"));
songs.add(new Song("大风吹", "王赫野", "大风吹"));
songs.add(new Song("今天", "刘德华", "真永远"));
songs.add(new Song("再回首", "姜育恒", "多年以后·再回首"));
// 显示初始播放列表
System.out.println("初始音乐播放列表:");
displaySongs(songs);
// 用户选择喜欢的歌曲
System.out.println("\n请输入您喜欢的歌曲编号(1-" + songs.size() + "), 用逗号分隔:");
String input = scanner.nextLine();
// 解析用户输入
String[] selectedIndices = input.split(",");
List<Song> favoriteSongs = new ArrayList<>();
for (String indexStr : selectedIndices) {
try {
int index = Integer.parseInt(indexStr.trim()) - 1;
if (index >= 0 && index < songs.size()) {
favoriteSongs.add(songs.get(index));
} else {
System.out.println("无效的歌曲编号: " + (index + 1));
}
} catch (NumberFormatException e) {
System.out.println("无效的输入格式.");
}
}
// 显示用户喜欢的歌曲
System.out.println("\n您的喜欢歌曲列表:");
displaySongs(favoriteSongs);
// 计算并显示喜欢的歌曲数量
System.out.println("\n您的喜欢歌曲列表中共有 " + favoriteSongs.size() + " 首歌曲.");
}
/**
* 1、将以下电影存储到 list 集合中,并统计电影数量
*/
public static void MovieList () {
// 创建一个ArrayList来存储电影名称
ArrayList<String> movies = new ArrayList<>();
// 添加电影到列表中
movies.add("肖申克的救赎");
movies.add("阿甘正传");
movies.add("千与千寻");
movies.add("星际穿越");
movies.add("楚门的世界");
movies.add("放牛班的春天");
movies.add("当幸福来敲门");
// 统计电影数量
int movieCount = movies.size();
// 输出电影列表和电影数量
System.out.println("电影列表:");
for (String movie : movies) {
System.out.println(movie);
}
System.out.println("电影总数:" + movieCount);
}
}
写回答
1回答
-
彭彭老师
2024-12-06
第6题,“二毛”并没有添加到集合中,从投票中移除“二毛”,返回 false,成功移除元素时返回 true
第9题,同学的实现与原题要求不一样,也是可以的,达到练习目的即可,也可以按照下面的思路来实现
【解题思路】
1、定义一年级类,包含语文平均成绩、数学平均成绩、英语平均成绩 3 个属性
2、测试类中,实例化 5 个班级对象
3、创建 map 集合
4、将班级对象添加到 map 集合中,班级名称作为 key
5、遍历 map 集合键值对
00
相似问题
4题答案,请老师点评,谢谢
回答 1
5题答案,请老师点评,谢谢
回答 1