成绩查询系统

数学老师小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;
		}
	}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值