public class HomeWork1 {
/*
* 학번(문자열), 이름, 국어점수, 영어점수, 수학점수, 총점, 등수를 멤버로 갖는
Student클래스를 만든다.
생성자는 학번, 이름, 국어, 영어, 수학 점수만 매개변수로 받아서 처리한다.
이 Student객체들은 List에 저장하여 관리한다.
List에 저장된 데이터들을 학번의 오름차순으로 정렬하여 출력하는 부분과
총점의 역순으로 정렬하는 부분을 프로그램 하시오.
(총점이 같으면 학번의 내림차순으로 정렬되도록 한다.)//조건
(학번 정렬기준은 Student클래스 자체에서 제공하도록 하고,
총점 정렬기준은 외부클래스에서 제공하도록 한다.)
*/
public static void main(String[] args) {
List<Student> s = new ArrayList<Student>();
//list 타입으로 s에 담기
s.add(new Student("1", "홍길동", 98, 70, 100));
s.add(new Student("4", "이순신", 40, 75, 95));
s.add(new Student("3", "성충향", 10, 50, 70));
s.add(new Student("2", "변학도", 70, 90, 80));
s.add(new Student("5", "강감찬", 98, 70, 100));
//List 타입에 합계 출력
Student student1 = s.get(4);
int ex = student1.getSum();
System.out.println(ex);
for(int i=0; i<s.size(); i++) {
int cnt = 1;
for(int j=0; j<s.size(); j++) {
if(s.get(i).getSum()<s.get(j).getSum()) {
cnt++;
}
s.get(i).setRank(cnt);
}
}
System.out.println("정렬전 :");
for (Student student : s) {
System.out.println(student);
}
Collections.sort(s);// 오름차순 정렬하기
System.out.println("학번 오름차순");
for (Student student : s) {
System.out.println(student);
}
System.out.println("(╯°□°)╯︵ 🖥️(╯°□°)╯︵🖥️(╯°□°)╯︵🖥️(╯°□°)╯︵ 🖥️(╯°□°)╯︵ 🖥️(╯°□°)╯︵🖥️(╯°□°)╯︵🖥️(╯°□°)╯︵ 🖥️");
Collections.sort(s, new SortNumDesc());//점수별로 내림차순
// for (int i = 0; i < s.size(); i++) { //미숙
// int Rank = i+1;
// s.get(i).setRank(Rank);
// }
System.out.println("점수 내림차순 정렬");
for (Student student : s) {
System.out.println(student);
}
}
}
class SortNumDesc implements Comparator<Student>{
@Override
public int compare(Student s1, Student s2) {
if(s1.getSum() < s2.getSum()) {
return Integer.compare(s1.getSum(), s2.getSum()) * -1;//내림차순
}
//
return -1;
}
}
class Student implements Comparable<Student>{
private String no;//학번(문자열)
private String name;//이름
private int kor_num;//국어점수
private int eng_num;//영어점수
private int math_num;//수학점수
private int sum;//총점
private int rank;//등수
//생성자
public Student(String no, String name, int kor_num, int eng_num, int math_num) {
this.no = no;
this.name = name;
this.kor_num = kor_num;
this.eng_num = eng_num;
this.math_num = math_num;
}
@Override
public int compareTo(Student student) {
return this.getNo().compareTo(student.getNo());
}
@Override
public String toString() {
return "Student [no=" + no + ", name=" + name + ", kor_num=" + kor_num + ", eng_num=" + eng_num + ", math_num="
+ math_num + ", sum=" + getSum() + ", rank=" + rank + "]";
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor_num() {
return kor_num;
}
public void setKor_num(int kor_num) {
this.kor_num = kor_num;
}
public int getEng_num() {
return eng_num;
}
public void setEng_num(int eng_num) {
this.eng_num = eng_num;
}
public int getMath_num() {
return math_num;
}
public void setMath_num(int math_num) {
this.math_num = math_num;
}
public int getSum() {
return getKor_num()+getEng_num()+getMath_num();
}
public void setSum(int sum) {
this.sum = sum;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}