Java lesson19homework
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的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- box-sizing Bootstrap
https://getbootstrap.com/docs/4.0/getting-started/introduction/#box-sizing Box-sizing For more strai ...
- redis数据类型及订阅操作
Redis数据类型详解 Redis键/值介绍 Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如“foo”的简单字符串到一个JPG文件的内容都可以.空字符串也是有效k ...
- 06 MySQL之索引
01-索引 1.索引是对数据库表中一列或多列的值进行排序的一种数据结构,使用索引可提高数据库中特定数据的查询速度. 2.索引是一个单独的.存储在磁盘上的数据库结构,包含对数据表里所有记录的引用指针. ...
- 关于JavaWeb面试
什么是JavaWeb? Java web 是指有Java语言开发出来可以在万维网上访问浏览的程序. Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和 ...
- selenium 2019 笔记
1.get打开本地目录的方法
- java和delphi共用的des加密解密
java: import antlr.StringUtils;import org.jeecgframework.core.util.StringUtil; import java.security. ...
- import、from 模块 import*、reload
import 模块名.from 模块名 import* 均为导入模块,前者调用模块中函数或者变量时需要添加引用,即模块名.调用函数或者变量名 具体用法见下 https://jingyan.baidu. ...
- 【图像处理与医学图像处理】YUV与RGB格式转换速度几种方法对比
[视频处理]YUV与RGB格式转换 YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与 ...
- 【VS开发】CListCtrl控件使用方法总结
CListCtrl控件使用方法总结 今天第一次用CListCtrl控件,遇到不少问题,查了许多资料,现将用到的一些东西总结如下: 以下未经说明,listctrl默认view 风格为report 相关类 ...
- MySQL_表数据操作
目录 1.添加数据 2.添加多条数据 3.更新数据 4. 删除数据 5.查看表数据 1.添加数据 insert into <表名>[<字段名>[,...]] values(&l ...