7-2 sdust-Java-학생 성적 읽기 및 정렬(8점)

2734 단어 기초 문제
**
7-2 sdust-Java-학생 성적 읽기 및 정렬(8점)
**
1) 키보드에서 여러 줄의 학생 성적 정보를 입력하고 각 줄은 한 학생의 한 과목의 성적을 표시하며 마지막 줄은'exit'로 끝난다.각 줄의 텍스트 형식은 학번, 이름, 과정명, 성적입니다.프로그램은 학생과 그 성적을 읽을 수 있으며 같은 학번을 가진 학생과 그 성적을 하나의Student(학생류)류 대상의 목록(List)stuList로 읽을 수 있다.2) 프로그램은 학생과 그 성적의 데이터를 읽은 후 stulist의 학생을 평균 성적 하락 순서에 따라 배열(평균 성적이 같으면 학번 숫자가 작은 것이 앞에 배열)하고 정렬된 학생의 학번, 이름과 성적을 출력할 수 있다.
입력 형식: 여러 줄이 표시하는 학생 성적, 각 줄은 한 학생의 이름, 학번, 과정명, 성적(정수)이다.불동업자는 같은 학생(학번이 같은 학생은 같은 학생)의 다른 과정의 성적이 될 수 있다.
출력 양식: 학생 평균 성적 하락 순서(평균 성적이 같은 학번이 작은 것이 앞에 있음)에 따라 학생 순위(구체적인 출력 양식은 예시를 참조).
입력 예: 소명,2001,Java,88소강,2002,Java,78소정,2003,Java,56소홍,2004,Java,85소명,2001,Python,84소강,2002,Python,98소정,2003,JavaWeb,66소홍,2004,Algorithm,87exit 출력 예: No1:2002,소강No2:2001,소명No3:2004,소홍No4:2003,소정
분석: 자체 문제는 어려운 문제가 아니다. 문제의 관건은 입력한 학생 정보에 대한 판단이다. 만약에 학생 정보가 이미 존재한다면 우리는 그것을 이미 있는 집합에 추가해야 하고 존재하지 않는다면 새로운 대상을 만들고 그것을 집합에 넣어야 한다.(중간에 설명된 부분은 당초 디버깅을 할 때 추가된 디버깅 지점과 디버깅을 위한 방법)
import java.util.*;
class Student implements Comparable{
    private String name,id;
    private int subject=1;
    private int score;
    private double sum=0;
    Student(){}
    Student(String name,String id,int score){
             this.name=name;
             this.id=id;
             this.score=score;
    }
    public String getid(){
        return this.id;
    }
    public void subjectadd() {
        this.subject++;
    }
    public void scoreadd(int score){
        this.score=this.score+score;
    }
    public String getname() {
        return this.name;
    }
    public void sum() {
        this.sum=this.score/this.subject;
    }
   /*public int rescore() {
        return this.score;
    }*/
   /* public double getsum(){
        return this.sum;
    }*/
    public int compareTo(Student o1){
               Student one = (Student) o1;
               if(this.sum-one.sum!=0)
               return (int)(one.sum-this.sum);
               else
               return this.id.compareTo(one.id);
    }
}
public class Main{
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            List list =new ArrayList();
            int i,flag=0;
            String k;
            String[] and =new String[5];

            while(sc.hasNext())
            {
                k=sc.next();
                and=k.split(",");
                if(k.compareTo("exit")==0)
                break;
                for(i=0;i

import java.util.Arrays; import java.util.Scanner; import java.util.*;

좋은 웹페이지 즐겨찾기