定义一个表示学生等级的枚举类,包括优秀、良好、及格和不及格四个等级,并在另一个类中
编写一个统计学生等级的方法。该方法输入一个学生成绩数组(整型),并返回一个包含每个
等级学生数量的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;
}
}
老师的答案
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;
}
}
Grade的另一种枚举法
public enum Grade {
PERFECT("优秀"),GOOD("优秀"),PASS("优秀"),FAIL("优秀");
String info;
Grade(String info){
this.info = info;
}
}