天天看點

成績查詢系統

數學老師小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;
    }
  }