목차
<학생 성적 출력 프로그램 구현>
ArrayList를 사용해 '학생 성적 출력 프로그램'을 구현해보자.
이 프로그램은 'Student클래스'와 'Subject클래스'를 사용한다.
Subject클래스는 참조 자료형이므로 ArrayList를 활용해 구현해보자.
student클래스 구현하기
어떤 학생이 수강하는 과목들의 성적을 출력하는 것이므로 '학생 객체'가 필요.
package array;
import java.util.ArrayList;
public class Student {
int studentID;
String studentName;
ArrayList<Subject> subjectList;
// Student클래스의 멤버 변수들
public Student(int studentID, String studentName) {
this.studentID = studentID;
this.studentName = studentName;
subjectList = new ArrayList<Subject>();
}
public void addSubject(String name, int score) {
Subject subject = new Subject(); //Subject 클래스 생성하기
subject.setName(name); //과목 이름 추가하기
subject.setScorePoint(score); //점수 추가하기
subjectList.add(subject); //배열에 각각의 subject 인스턴스들 저장하기
} // 수강하는 과목을 subjectList 배열에 하나씩 추가하는 메서드
public void ShowStudentInfo() {
int total = 0;
for(Subject s : subjectList) {
total += s.getScorePoint(); //총점 더하기
System.out.println(studentName+"의 "+ s.getName() +"과목 성적은 " + s.getScorePoint() + "입니다.");
}
System.out.println(studentName+"의 총점은 " + total + "입니다.");
}
}
한 학생이 수강하는 과목은 여러 개가 있을 수 있으므로, 학생이 수강하는 과목을 저장할 배열로
Subject 클래스형으로 ArrayList를 subjectList라는 변수명으로 생성. ( ArrayList<Subject> subjectList; )
그리고 학생의 수강 과목을 하나씩 추가하기 위해 addSubject()메서드를 만든다.
매개변수로 넘어온 과목 이름과 점수를 가지고 Subject클래스를 생성, 생성한 인스턴스는 subjectList에 추가.
그러면 이 학생의 수강 과목 정보는 subjectList에 저장이 되는 것.
showStudentInfo()메서드에서는 각 과목의 성적과 총점을 출력.
향상된 for문을 사용하여 subjectList 배열의 내용을 출력할 수 있다.
Subject 클래스 구현하기
과목의 정보를 담고 있는 Subject클래스
package array;
public class Subject {
private String name;
private int scorePoint;
// Subject클래스의 멤버 변수
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScorePoint() {
return scorePoint;
}
public void setScorePoint(int scorePoint) {
this.scorePoint = scorePoint;
}
}
Subject 클래스의 멤버 변수는 과목 이름과 성적 두 가지.
name과 scorePoint 멤버 변수와 이들의 get(),set()메서드로 구성되어 있다.
테스트 클래스 구현하기
테스트 클래스에서 학생 두 명을 생성하고 각 학생의 과목별 성적과 총점을 출력해보자.
package array;
public class StudentTest {
public static void main(String[] args) {
Student studentLee = new Student(1001, "Lee");
studentLee.addSubject("국어", 100);
studentLee.addSubject("수학", 50);
Student studentKim = new Student(1002, "Kim");
studentKim.addSubject("국어", 70);
studentKim.addSubject("수학", 85);
studentKim.addSubject("영어", 100);
studentLee.ShowStudentInfo();
System.out.println("=====");
studentKim.ShowStudentInfo();
}
}
studentLee를 생성하고 ID와 이름을 기입.
studentLee의 addSubject()메서드를 호출하여 학생 Lee가 수강중인 과목들(국,수)을 studentLee의 subjectList에 추가.
studentKim도 마찬가지고.
그리고 showStudentInfo()메서드를 호출하여 각 학생의 과목별 성적과 총점을 출력한다.
run:
<연습 문제>
Q1.
배열은 [같은] 자료형을 순서대로 관리할 때 사용하는 자료 구조입니다.
Q2.
알파벳 출력 예제에서 각 배열 요소 값을 대문자에서 소문자로 변환해보자.
Q3.
배열 길이가 5인 정수형 배열을 선언하고, 1~10중 짝수만을 배열에 저장한 후 그 합을 출력해보자.
package prac;
public class Q3 {
public static void main(String[] args) {
int[] q3 = {2,4,6,8,10};
int total = 0;
for(int i = 0; i < q3.length; i++) {
total += q3[i];
System.out.println(q3[i]);
}
System.out.println("모든 요소의 합은 "+total+"입니다.");
}
}
run:
Q4.
다음과 같이 Dog클래스가 있다. DogTest클래스와 배열 길이가 5인 Dog[]배열을 만든 후 Dog인스턴스를 5개 생성하여 배열에 추가. for문과 향상된 for문에서 Dog클래스의 showDogInfo()메서드를 사용하여 배열에 추가한 Dog 정보를 모두 출력하시오.
Dog클래스 :
public class Dog {
private String name;
private String type;
public Dog(String name, String type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String showDogInfo() {
return name + ", " + type;
}
}
DogTest 클래스:
public class DogTest {
public static void main(String[] args) {
Dog[] dog = new Dog[5];
dog[0] = new Dog("불독","사나움");
dog[1] = new Dog("불독1","사나움1");
dog[2] = new Dog("불독2","사나움2");
dog[3] = new Dog("불독3","사나움3");
dog[4] = new Dog("불독4","사나움4");
for(int i = 0; i < dog.length; i++) {
System.out.println(dog[i].showDogInfo());
}
System.out.println("=====향for======");
for(Dog dog1 : dog) {
System.out.println(dog1.showDogInfo());
}
}
}
run:
Q5.
Q4에서 DogTestArrayList 클래스를 만들어 멤버 변수로 ArrayList를 사용. Dog인스턴스를 5개 생성하여 ArrayList에 추가하고 ArrayList의 정보를 출력하는 코드를 작성.
import java.util.ArrayList;
public class DogTestArrayList {
public static void main(String[] args) {
ArrayList<Dog> list = new ArrayList<>();
list.add(new Dog("치와와1","깨방정1"));
list.add(new Dog("치와와2","깨방정2"));
list.add(new Dog("치와와3","깨방정3"));
list.add(new Dog("치와와4","깨방정4"));
list.add(new Dog("치와와5","깨방정5"));
for(Dog dog1 : list) {
System.out.println(dog1.showDogInfo());
}
}
}
run:
[Do it! 자바 프로그래밍 입문] 도서로 공부하며 정리한 글입니다.