您的位置:首页 > 其它

普及练习场 排序Ex 谁拿了最多奖学金

2017-12-14 19:34 281 查看
题目链接

题意理解

这题就是说,你写个比较大小的方法就好了。

代码

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

class Student implements Comparable {
String name;
int award;
int index;

public Student(String name, int avgScore, int commentScore, String leader, String west, int paperNum, int index) {
this.name = name;
this.index = index;
this.award = 0;
if (avgScore > 80 && paperNum >= 1) {
this.award += 8000;
}
if (avgScore > 85 && commentScore > 80) {
this.award += 4000;
}
if (avgScore > 90) {
this.award += 2000;
}
if (avgScore > 85 && west.equals("Y")) {
this.award += 1000;
}
if (commentScore > 80 && leader.equals("Y")) {
this.award += 850;
}
}

@Override
public int compareTo(Object o) {
Student student = (Student)o;
if(this.award != student.award) {
return this.award - student.award;
} else {
return student.index - this.index;
}
}
}

public class Main {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
Student[] students = new Student
;
String name;
int avgScore;
int commentScore;
String leader;
String west;
int paperNum;
int awardSum = 0;
for(int i = 0; i < N; i++) {
name = scanner.next();
avgScore = scanner.nextInt();
commentScore = scanner.nextInt();
leader = scanner.next();
west = scanner.next();
paperNum = scanner.nextInt();
students[i] = new Student(name, avgScore, commentScore, leader, west, paperNum, i);
awardSum += students[i].award;
}
scanner.close();
Arrays.sort(students, Collections.reverseOrder());
int maxAward = students[0].award;
System.out.println(students[0].name);
System.out.println(maxAward);
System.out.println(awardSum);
}
}


欢迎加入“不会算法一群菜鸟”,群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: