[Java] 배열 응용 프로그램

1 분 소요

예제 시나리오

1001학번 Lee와 1002 학번 Kim, 두 학생이 있다. Lee 학생은 2과목을 수강한다. 국어 점수가 100점, 수학 점수는 50점이다.
Kim 학생은 3과목을 수강한다. 국어 점수가 70점, 수학 점수가 85점, 영어 점수가 100점이다. Student 클래스와 Subject 클래스를 생성한 후 두 학생의 과목 성적과 총점을 각각 출력해 보자.

먼저 Student 클래스를 구현해보자.
Student 클래스는 이름과 학번, 그리고 수강과목을 멤버변수로 갖는데, 이중 수강과목은 ArrayList로 선언하여 구현한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package arraylist;
import java.util.ArrayList;

public class Student {
    String name;
    int studentId;
    ArrayList<Subject> subjectList;

    public Student(int studentId, String name){
        this.studentId = studentId;
        this.name = name;
        subjectList = new ArrayList<Subject>();
    }
    //생성자
    public void addSubject(String name, int score){
        Subject subject = new Subject();
        subject.setScore(score);
        subject.setName(name);
        subjectList.add(subject);
    }
    public void showInfo(){
        int total = 0;
        for(Subject s: subjectList){
            total += s.getScore();
            System.out.println("학생" + name + "의" + s.getName()+"과목 성적은"+s.getScore()+"입니다.");
        }
        System.out.println("총점은"+total);
    }
}

Student 클래스는 과목을 추가하는 addSubject와 정보를 출력하는 showInfo 메서드를 갖는다.
여기서 ArrayList의 자료형으로 Subject 클래스를 선언했으므로 Subject 클래스를 만들어주자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package arraylist;

public class Subject {
    private String name;
    private int score;

    public Subject(){
        this.name = name;
        this.score = score;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return name;
    }
    public void setScore(int score) {
        this.score =  score;
    }
    public int getScore() {
        return score;
    }

}

Student 인스턴스의 addSubject 메서드안에 있는 Subject의 메서드를 만들어주어야 하므로, 점수와 이름을 private 멤버변수로 선언해주고, 각각의 변수에 값을 할당하는 함수 setName과 setScore를 만들어준다.

이제 ArrayListTest 클래스를 만들어 main함수로써 우리가 위에 만들었던 클래스들이 동작하도록, Lee와 Kim의 인스턴스를 선언해 주고 과목과 점수를 입력후, 출력해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package arraylist;

public class ArrayListTest {
    public static void main(String[] args){
        Student Lee = new Student(1001, "Lee");
        Lee.addSubject("국어",100);
        Lee.addSubject("수학",50);

        Student Kim = new Student(1002, "Kim");
        Kim.addSubject("국어", 70);
        Kim.addSubject("수학", 85);
        Kim.addSubject("영어", 100);

        Lee.showInfo();
        System.out.println("---------------------------");
        Kim.showInfo();
    }

}

>>> 학생Lee의국어과목 성적은100입니다.
>>> 학생Lee의수학과목 성적은50입니다.
>>> 총점은150
>>> ---------------------------
>>> 학생Kim의국어과목 성적은70입니다.
>>> 학생Kim의수학과목 성적은85입니다.
>>> 학생Kim의영어과목 성적은100입니다.
>>> 총점은255

카테고리:

업데이트:

댓글남기기