package com.xt.lesson19;
/**
* 已知如下:
下表为某班级四次考试成绩单,
1. 要求使用HashMap<String, Integer>存储每次考试的成绩(key键为姓名,value为成绩)。
2. 要求使用LinkedList存储考试次数,有几次考试就有几个HashMap
3. 注意:后台用户是知道学生姓名的
形式如:LinkedList<HashMap<String, Integer>>
姓名 第一次考试成绩 第二次考试成绩 第三次考试成绩 第四次考试成绩
张三 80 88 86 88
李四 65 75 67 80
王五 35 45 55 59
薛六 90 92 98 88
赵七 70 75 65 68
要求是实现的功能
(1)查询某次考试的总成绩?(具体考试次数由后台用户输入Scanner决定)。
(2)查询某个学生的总成绩?(具体学生由后台用户输入Scanner决定)。
(3)查询某个学生的平均成绩?(具体学生由后台用户输入Scanner决定)。
(4)查询全班平均分最高的一次考试成绩是哪次,并输出平均成绩的具体值。
(5)查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。
(6) 使用TreeMap对学生总成绩进行排名输出
提示:
例如第一次考试成绩,应该存储为如下格式:
HashMap<String, Integer> m = new HashMap<String, Integer>();
m.put(“张三”, 80);
m.put(“李四”, 65);
m.put(“王五”, 35);
m.put(“薛六”, 90);
m.put(“赵七”, 70); */
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class StuScore {
Map<String,Integer> hm1=new HashMap<String,Integer>(5);
Map<String,Integer> hm2=new HashMap<String,Integer>(5);
Map<String,Integer> hm3=new HashMap<String,Integer>(5);
Map<String,Integer> hm4=new HashMap<String,Integer>(5);
LinkedList<Map<String,Integer>> llist=new LinkedList<Map<String,Integer>>();
TreeSet<Student> tset=new TreeSet<Student>(); public void addState(){ hm1.put("张三", 80);
hm1.put("李四", 65);
hm1.put("王五", 35);
hm1.put("薛六", 90);
hm1.put("赵七", 70); hm2.put("张三", 88);
hm2.put("李四", 75);
hm2.put("王五", 45);
hm2.put("薛六", 92);
hm2.put("赵七", 75); hm3.put("张三", 86);
hm3.put("李四", 67);
hm3.put("王五", 55);
hm3.put("薛六", 98);
hm3.put("赵七", 65); hm4.put("张三", 88);
hm4.put("李四", 80);
hm4.put("王五", 59);
hm4.put("薛六", 88);
hm4.put("赵七", 68); }
//查询某次考试的总成绩?(具体考试次数由后台用户输入Scanner决定)。
public void oneExamTotolScore(){
System.out.println("\n\n----------------------以下是查询某次考试的总成绩-----------------------\n\n");
int totalScore=0;
Scanner scanner=new Scanner(System.in);
System.out.println("请您输入考试的次数:");
int examTimes=scanner.nextInt();
//算出这次考试总分
switch (examTimes){
case 1:{
totalScore=hm1.get("张三")+hm1.get("李四")+hm1.get("王五")
+hm1.get("薛六")+hm1.get("赵七");
break;//防止case穿透
}
case 2:{
totalScore=hm2.get("张三")+hm2.get("李四")+hm2.get("王五")
+hm2.get("薛六")+hm2.get("赵七");
break;//防止case穿透
}
case 3:{
totalScore=hm3.get("张三")+hm3.get("李四")+hm3.get("王五")
+hm3.get("薛六")+hm3.get("赵七");
break;//防止case穿透
}
case 4:{
totalScore=hm4.get("张三")+hm4.get("李四")+hm4.get("王五")
+hm4.get("薛六")+hm4.get("赵七");
break;//防止case穿透
}
}
System.out.println("第"+examTimes+"的考试总分数是:"+totalScore);
} //查询某个学生的总成绩?(具体学生由后台用户输入Scanner决定)。
public void stuTotalScore(){
System.out.println("\n\n--------------------以下是查询某个学生的总成绩------------------\n\n");
System.out.println("\n\n请输入您想要查询的学生姓名:");
Scanner scanner=new Scanner(System.in);
String name1=scanner.next();
//得出这个学生的总分。
int totalScore=hm1.get(name1)+hm2.get(name1)+hm3.get(name1)+
hm4.get(name1);
System.out.println("这个学生的考试总成绩是:"+totalScore);
} //查询某个学生的平均成绩?(具体学生由后台用户输入Scanner决定)。
public void averScore(){
System.out.println("\n\n----------------以下是查询某个学生的平均成绩-------------------\n\n");
System.out.println("\n\n请输入您想要查询的学生姓名:");
Scanner scanner=new Scanner(System.in);
String name1=scanner.next();
//得出这个学生的总分。
int totalScore=hm1.get(name1)+hm2.get(name1)+hm3.get(name1)+
hm4.get(name1); double averScore=totalScore/4.0;
System.out.println("这个学生的考试平均成绩是:"+averScore); } //查询全班平均分最高的一次考试成绩是哪次,并输出平均成绩的具体值。
public void highAverageScoreTime(){
System.out.println("\n\n-------------------以下是查询全班平均分最高的一次考试成绩是哪次,并输出平均成绩的具体值-----------------------\n\n");
double averScore1=(hm1.get("张三")+hm1.get("李四")+hm1.get("王五")
+hm1.get("薛六")+hm1.get("赵七"))/5.0;
double averScore2=(hm2.get("张三")+hm2.get("李四")+hm2.get("王五")
+hm2.get("薛六")+hm2.get("赵七"))/5.0;
double averScore3=(hm3.get("张三")+hm3.get("李四")+hm3.get("王五")
+hm3.get("薛六")+hm3.get("赵七"))/5.0;
double averScore4=(hm4.get("张三")+hm4.get("李四")+hm4.get("王五")
+hm4.get("薛六")+hm4.get("赵七"))/5.0;
//此方法求得最大平均分
/*double maxScore=averScore1;
maxScore=averScore2>maxScore?averScore2:maxScore;
maxScore=averScore3>maxScore?averScore3:maxScore;
maxScore=averScore4>maxScore?averScore4:maxScore;*/
double maxScore=averScore1;
int i=1;
if(averScore2>maxScore){
maxScore=averScore2;
i++;
}
if(averScore3>maxScore){
maxScore=averScore3;
i++;
}
if(averScore4>maxScore){
maxScore=averScore4;
i++;
}
System.out.println("全班平均分最高的一次考试成绩是"+i+"最高平均成绩为"+maxScore); } //查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。
public void stuAndTimeScore(){
System.out.println("\n\n--------------以下是查询某个学生的某次考试成绩---------------\n\n");
System.out.println("\n\n请输入您想要查询的学生姓名:");
Scanner scanner=new Scanner(System.in);
String name1=scanner.next(); Scanner scanner1=new Scanner(System.in);
System.out.println("请您输入考试的次数:");
int examTimes=scanner1.nextInt(); switch (examTimes){
case 1:{
System.out.println(name1+"的第1的考试成绩为:"+hm1.get(name1));
break;
} case 2:{
System.out.println(name1+"的第2的考试成绩为:"+hm2.get(name1));
break;
} case 3:{
System.out.println(name1+"的第3的考试成绩为:"+hm3.get(name1));
break;
} case 4:{
System.out.println(name1+"的第4的考试成绩为:"+hm4.get(name1));
break;
} } } public void sortStu(){
Map<String,Integer> tMap=new HashMap<String,Integer>();
tMap.put("张三", hm1.get("张三")+hm2.get("张三")+hm3.get("张三")+
hm4.get("张三"));
tMap.put("李四", hm1.get("李四")+hm2.get("李四")+hm3.get("李四")+
hm4.get("李四"));
tMap.put("王五", hm1.get("王五")+hm2.get("王五")+hm3.get("王五")+
hm4.get("王五"));
tMap.put("薛六", hm1.get("薛六")+hm2.get("薛六")+hm3.get("薛六")+
hm4.get("薛六"));
tMap.put("赵七", hm1.get("赵七")+hm2.get("赵七")+hm3.get("赵七")+
hm4.get("赵七"));
TreeMap tMap1=new TreeMap();
tMap1.putAll(tMap);
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
switch (a){
case 1:{
System.out.println("\n\n-----------------对学生总成绩进行排名输出------------------\n\n");
Set<Entry<String,Integer>> entrySet=tMap1.entrySet(); for(Entry<String,Integer> entry:entrySet){
System.out.println("姓名 第一次考试成绩 第二次考试成绩 第三次考试成绩 第四次考试成绩 总成绩");
System.out.println(entry.getKey()+" "+hm1.get(entry.getKey())+
" "+hm2.get(entry.getKey())+" "
+ hm3.get(entry.getKey())+" "+hm4.get(entry.getKey())+" "
+entry.getValue());
}
}
case 0:
System.exit(0);
} } public static void main(String[] args) {
StuScore ss=new StuScore(); ss.addState();
/*ss.oneExamTotolScore();
ss.stuTotalScore();
ss.averScore();
ss.highAverageScoreTime();
ss.stuAndTimeScore();*/
System.out.println("如果您想得到总成绩排名,请输入1,否则输入0!");
ss.sortStu();
}
}

Java lesson19homework的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题

    背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...

  3. Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...

  4. 论:开发者信仰之“天下IT是一家“(Java .NET篇)

    比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...

  5. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  6. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  7. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  8. Java多线程基础学习(二)

    9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...

  9. Java多线程基础学习(一)

    1. 创建线程    1.1 通过构造函数:public Thread(Runnable target, String name){}  或:public Thread(Runnable target ...

随机推荐

  1. pip安装命令集合

    先加速 使用清华大学镜像源(一定要用,会少很多坑) https://mirrors.tuna.tsinghua.edu.cn/help/alpine/ 超时加上参数  --default-timeou ...

  2. webpack入门-配置项

    一.常用配置 1.enter(表示入口,webpack从此处开始构建) 2.output(配置输出结果) 3.module(关于模块的配置,内部可以配置loader) 4.resolve(配置寻找模块 ...

  3. LeetCode 328. 奇偶链表(Odd Even Linked List)

    题目描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂度应为 O ...

  4. XGBoost原理简介

    XGBoost是GBDT的改进和重要实现,主要在于: 提出稀疏感知(sparsity-aware)算法. 加权分位数快速近似学习算法. 缓存访问模式,数据压缩和分片上的实现上的改进. 加入了Shrin ...

  5. WordPress窗体化侧边栏

    窗体化侧边栏是一个支持 Widget 的侧边栏或者说是窗体化(widgetized)的侧边栏几乎是 WordPress 主题的标准. 首先,什么是窗体化(widgetizing)呢?简单的说,窗体化就 ...

  6. 如何使用git send-email发送补丁?

    答: git send-email <patch-name> --to <username>@<example>.com --cc <username> ...

  7. 关于go module

    从Go 1.11开始引入module,用于版本管理. 通过使用module,工程目录的位置不用必须放在GOPATH下. 当前版本是1.13,下文中将以Go1.13为例介绍module. 在Go 1.1 ...

  8. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解

    笔记 2.微服务下登录检验解决方案 JWT讲解     简介:微服务下登录检验解决方案 JWT讲解 json wen token 1.JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方 ...

  9. LINUX 的网站压力测试工具 webbench

    网站压力测试工具-Webbench webbench简介:        Webbench是有名的网站压力测试工具,它是由 Lionbridge公司(http://www.lionbridge.com ...

  10. Js 使用Map

    function Map() { this.elements = new Array(); this.size = function() { return this.elements.length; ...