PTA 乙级 1004 成绩排名 (20分)
Posted scp-514
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA 乙级 1004 成绩排名 (20分)相关的知识,希望对你有一定的参考价值。
写的很冗余,也没考虑类之间的关系,还能更简洁,更高效,仅做参考
有时间考虑做一个学生数据库
1 import java.util.Arrays; 2 import java.util.HashMap; 3 import java.util.Scanner; 4 5 public class Main { 6 private HashMap<String,HashMap<String,Integer>> Grade = 7 new HashMap<String, HashMap<String, Integer>>(); 8 9 public void SetGrade(String name,String ID,int grade){ //得到成绩 10 HashMap<String,Integer> stu = new HashMap<String, Integer>(); 11 stu.put(ID,grade); 12 Grade.put(name,stu); 13 } 14 15 public void getextre(boolean est){ //获得最高分、最低分(true是最高分,false 是最低分) 16 String str = null,name = null; 17 boolean flag = true; 18 for(String s : Grade.keySet()){ 19 for(String k : Grade.get(s).keySet()){ 20 if(flag){name = s;str = k; flag = false;} 21 if(est) { 22 if (Grade.get(s).get(k) > Grade.get(name).get(str)) { 23 name = s; 24 str = k; 25 } 26 }else{ 27 if (Grade.get(s).get(k) < Grade.get(name).get(str)) { 28 name = s; 29 str = k; 30 } 31 } 32 } 33 } 34 System.out.println(name+" "+str); 35 } 36 37 public static void main(String[] args) { 38 Main gad = new Main(); 39 Scanner in = new Scanner(System.in); 40 int num = in.nextInt(); 41 for(int i = 0; i<num; i++){ 42 String name = in.next(); 43 String sub = in.next(); 44 int n = in.nextInt(); 45 gad.SetGrade(name,sub,n); 46 } 47 gad.getextre(true); 48 gad.getextre(false); 49 in.close(); 50 } 51 }
利用HashMap实现的
main函数里获取名字、ID、成绩那部分考虑过用字符串获取后,用split 函数分割,但是成绩从 String 转 int 的时候会报错,尝试过Integer.valueOf()和Interger.parseInt(String),还是报错,无法解决,只好定义变量去处理
以上是关于PTA 乙级 1004 成绩排名 (20分)的主要内容,如果未能解决你的问题,请参考以下文章