成绩查询系统

来源:互联网 发布:迅雷赚钱宝 网络硬盘 编辑:程序博客网 时间:2024/04/27 17:08
数学老师小y 想写一个成绩查询系统,包含如下指令:


    insert [name] [score],向系统中插入一条信息,表示名字为name的学生的数学成绩为score。
    find [name],表示查找名字为name的学生的数学成绩。


注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0…1000 \ldots 1000…100 的整数。


老师找到你,想你帮他完成这个系统。
输入格式


输入若干行,每行都是insert [name] [score]或者find [name]的形式,或一行end表示输入结束。输入行数不大于 100010001000,每个学生名字长度不大于 202020 个字符。
输出格式


对于每个查询,输出查询的学生的最高成绩,如果系统中不存在该学生,输出 ?1-1?1。
样例输入


insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find jack
end


样例输出


86

-1





这个题最好的方法应该就是用map的集合框架了。不过用普通的循环条件也是比较简单的。

方法一:map集合框架

static Scanner sc=new Scanner(System.in);static int flag=0;public static void main(String[] args){Test08_2 test=new Test08_2();while(true){if(flag==1){break;}test.start();}}Map a=new LinkedHashMap<String,Integer>();public void start(){String string=sc.next();if(string.equals("insert")){String num1=sc.next();int num2=sc.nextInt();if(a.containsKey(num1)){int a2=(int) a.get(num1);num2=Math.max(a2, num2);}a.put(num1, num2);}else{if(string.equals("find")){String a2=sc.next();if(a.containsKey(a2)){System.out.println(a.get(a2));}else{System.out.println(-1);}}else{flag=1;}}}

方法二:普通循环

public static void main(String[] args){Scanner sc=new Scanner(System.in);String[] i=new String[1000];int[] i1=new int[1000];int x=0;while(true){int max=0,flag=0;String str1=sc.next();if(str1.equals("insert")){i[x]=sc.next();i1[x]=sc.nextInt();x++;}if(str1.equals("find")){String str2=sc.next();for(int y=0;y<1000;y++){if(i[y]!=null&&i[y].equals(str2)){if(i1[y]>max){max=i1[y];flag=1;}}}for(int y1=0;y1<1000;y1++){if(flag==1){System.out.println(max);break;}else if(flag==0){if(i[y1]==null){System.out.println(-1);break;}}}}max=0; flag=0;}}



0 0