java hashmap 问题求解

已知如下:下表为某班级四次考试成绩单,1.要求使用HashMap<String,Integer>存储每次考试的成绩(key键为姓名,value为成绩)。2.要求使用Lin... 已知如下:
下表为某班级四次考试成绩单,
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)查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。

提示:
例如第一次考试成绩,应该存储为如下格式:
HashMap<String, Integer> m = new HashMap<String, Integer>();
m.put(“张三”, 80);
m.put(“李四”, 65);
m.put(“王五”, 35);
m.put(“薛六”, 90);
m.put(“赵七”, 70);
展开
 我来答
feixue19880521
2014-04-17 · TA获得超过103个赞
知道小有建树答主
回答量:130
采纳率:100%
帮助的人:89.5万
展开全部
package com.day14.mine;

import java.io.UnsupportedEncodingException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;

/**
* 〈一句话功能简述〉
* 〈功能详细描述〉
* @author
* @version
* @since
*/
public class GradeTest
{

/**
* 〈一句话功能简述〉
* 〈功能详细描述〉
* @param args void
* @throws Exception
*/
public static void main(String[] args) throws Exception
{
LinkedList<HashMap<String, Integer>> gradeList = getGradeList();
int time = 0;
String name = null;

System.out.println("---(1)查询某次考试总成绩(具体考试次数由台用户输入Scanner决定)---");
time = Integer.valueOf(getConsoleInput());

System.out.println(getTotalResults(gradeList, time));

System.out.println("-----(2)查询某学生总成绩(具体学生由台用户输入Scanner决定)-----");
name = getConsoleInput();
System.out.println(name + " : " + getStudentTotalResults(gradeList, name.trim()));

System.out.println("----(3)查询某学生平均成绩(具体学生由台用户输入Scanner决定)----");
name = getConsoleInput();
System.out.println(name + " : " + getStudentAVGResults(gradeList, name.trim()));

System.out.println("----(4)查询全班平均分高次考试成绩哪次并输出平均成绩具体值-------");
System.out.println(getHighGradeTime(gradeList));

System.out.println("-----(5)查询某学生某次考试成绩(学生姓名和考试次数均由台用户输入)------");
System.out.println("姓名:");
name = getConsoleInput();
System.out.println("次数:");
time = Integer.valueOf(getConsoleInput());
System.out.println(getStudentOneTimeResult(gradeList, time, name.trim()));
}

public static LinkedList<HashMap<String, Integer>> getGradeList()
{
LinkedList<HashMap<String, Integer>> gradeList = new LinkedList<HashMap<String, Integer>>();
HashMap<String, Integer> m = new HashMap<String, Integer>();
m.put("zhangsan", 80);
m.put("lisi", 65);
m.put("wangwu", 35);
m.put("xueliu", 90);
m.put("zhaoqi", 70);
gradeList.add(m);

m = new HashMap<String, Integer>();
m.put("zhangsan", 88);
m.put("lisi", 75);
m.put("wangwu", 45);
m.put("xueliu", 92);
m.put("zhaoqi", 75);
gradeList.add(m);

m = new HashMap<String, Integer>();
m.put("zhangsan", 86);
m.put("lisi", 67);
m.put("wangwu", 55);
m.put("xueliu", 98);
m.put("zhaoqi", 65);
gradeList.add(m);

m = new HashMap<String, Integer>();
m.put("zhangsan", 88);
m.put("lisi", 80);
m.put("wangwu", 59);
m.put("xueliu", 88);
m.put("zhaoqi", 68);
gradeList.add(m);
return gradeList;
}

private static String getConsoleInput()
{
Scanner scanner = new Scanner(System.in);

String input = "";

while(scanner.hasNext())
{
input = scanner.nextLine();
break;
}

return input;
}

/**
*
* 某次总成绩
* 〈功能详细描述〉
* @param gradeList
* @param once
* @return int
*/
public static int getTotalResults( LinkedList<HashMap<String, Integer>> gradeList,int time)
{
if(time > gradeList.size())
{
return -1;
}

int outTotalResults = 0;

HashMap<String, Integer> map = gradeList.get(time - 1);
Collection<Integer> values = map.values();
for (Integer i : values)
{
outTotalResults += i;
}

return outTotalResults;
}

/**
*
* 某生总成绩
* @param gradeList
* @param once
* @return int
* @throws UnsupportedEncodingException
*/
public static int getStudentTotalResults( LinkedList<HashMap<String, Integer>> gradeList,String name) throws UnsupportedEncodingException
{
int outTotalResults = 0;
for (HashMap<String, Integer> map : gradeList)
{
if(null != map.get(name))
{
outTotalResults += map.get(name);
}
}

return outTotalResults;
}

/**
*
* 学生平均成绩
* @param gradeList
* @param once
* @return int
*/
public static int getStudentAVGResults( LinkedList<HashMap<String, Integer>> gradeList,String name)
{
int totalResults = 0;

for (HashMap<String, Integer> map : gradeList)
{
if(null != map.get(name))
{
totalResults += map.get(name);
}
}

return totalResults / gradeList.size();
}

/**
*
* 平均成绩最高一次
* @param gradeList
* @return int
*/
public static int getHighGradeTime( LinkedList<HashMap<String, Integer>> gradeList)
{
double highAVGResults = 0;
double tempTotalResults = 0;
int highAVGIndex = 0;

for (int i = 0; i < gradeList.size(); i++)
{
Collection<Integer> values = gradeList.get(i).values();
for (Integer value : values)
{
tempTotalResults += value;
}

if (highAVGResults < tempTotalResults / values.size())
{
highAVGResults = tempTotalResults / values.size();
highAVGIndex = i;
tempTotalResults = 0;
}
}

return highAVGIndex;
}

/**
*
* 某生某次成绩
* @param gradeList
* @param time
* @param name
* @return int
*/
public static int getStudentOneTimeResult( LinkedList<HashMap<String, Integer>> gradeList, int time,String name)
{
if(time > gradeList.size())
{
return -1;
}

HashMap<String, Integer> map = gradeList.get(time - 1);

return map.get(name);
}
}
NoGrief
2014-04-17 · TA获得超过253个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:220万
展开全部
这个很简单吧。。简单思路

会用到LinkedList和map的相关方法。

1、LinkedList的get方法,参数是index,获取LinkedList中某个位置的元素,从0开始

2、HashMap的get方法,参数object,获取Hashmap中key为object的元素。
3、LinkedList的遍历(百度)

4、map的遍历(百度)
问题:
1、查询某次考试总成绩:调用LinkedList的get方法,获取到考试成绩列表(HashMap),遍历map,将所有value相加

2、遍历LinkedList,并且从HashMap中查询到学生成绩,map.get("学生姓名"),然后将所有value相加

3、同2,最后除以LinkedList.size()

4、遍历LinkedList,再遍历map,将map的value相加,除以map.size(),将结果存入一个ArrayList(或者数组),调用Arrays.sort,获取第一个元素就是平均值最大的
5、很简单,通过次数从LinkedList中获取所有成绩列表,再从成绩总获取某个学生的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式