枚举 enum 练习

发布时间 2023-07-13 15:24:21作者: OYそ

定义一个表示学生等级的枚举类,包括优秀、良好、及格和不及格四个等级,并在另一个类中
编写一个统计学生等级的方法。该方法输入一个学生成绩数组(整型),并返回一个包含每个
等级学生数量Map对象。
示例输入:
[90, 85, 78, 60, 55, 95, 76, 88]
示例输出:

我的答案
public enum Grade {
   A,B,C,D
}

public class EnumTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, Integer> map = new HashMap<>();
        int a = 0,b=0,c=0,d=0;
        while (!sc.hasNext("0")){
            //以输入0,结束输入 输入时以空格或回车间隔不同分数
           int score = sc.nextInt();
           Grade grade = getGrade(score);
           switch (grade){
               case A: a++;map.put("优秀",a); break;
               case B: b++;map.put("良好",b); break;
               case C: c++;map.put("及格",c); break;
               case D: d++;map.put("不及格",d); break ;
           }
        }
        //System.out.println(a+"  "+b+"  "+c+"  "+d);
        Set<String> set1 = map.keySet();
        for (Object key : set1){
            System.out.println(key + ":"+map.get(key) );
        }
    }
    public static Grade getGrade(int score){
        if(score >= 90) return Grade.A;
        else if(score >= 80) return Grade.B;
        else if(score >= 60) return Grade.C;
        else return Grade.D;
    }
}

image

老师的答案
public enum Grade1 {
    PERFECT,GOOD,PASS,FAIL
}

public class EnumTest1 {
    public static void main(String[] args) {
        int[] scores ={90, 85, 78, 60, 55, 95, 76, 88};
        Map<Grade1,Integer> map = count(scores);
        System.out.println(map);
    }
    public static Map<Grade1,Integer> count(int[] scores) {
        Map<Grade1,Integer> map = new HashMap<>();
        for(int s :scores){
            if(s>=90){
                //先读该键的值,有就+1写回去,没有就将1写间去
                Integer v = map.get(Grade1.PERFECT);
                if(v==null) map.put(Grade1.PERFECT,1);
                else map.put(Grade1.PERFECT,v+1);
            }else if(s>=80){
                Integer v = map.get(Grade1.GOOD);
                if(v==null) map.put(Grade1.GOOD,1);
                else map.put(Grade1.GOOD,v+1);
            }else if(s>=60){
                Integer v = map.get(Grade1.PASS);
                if(v==null) map.put(Grade1.PASS,1);
                else map.put(Grade1.PASS,v+1);
            }else {
                Integer v = map.get(Grade1.FAIL);
                if(v==null)  map.put(Grade1.FAIL,1);
                else map.put(Grade1.FAIL,v+1);
            }
        }
        return map;
    }
}

image

Grade的另一种枚举法
public enum  Grade {

      PERFECT("优秀"),GOOD("优秀"),PASS("优秀"),FAIL("优秀");

      String info;

      Grade(String info){
          this.info = info;
      }
}