알버트의 개발하는 블로그
자바 제11강 : ArrayList와 클래스 이용하여 학생들의 정보 출력하기 본문
이번 시간에는 ArrayList를 이용하여 입력된 학생들의 정보를 출력하는 것을 해보도록 하겠습니다.
이번 프로젝트를 위해서 필요한 클래스는 총 3가지입니다. 한 학생의 정보를 담기 위한 클래스인 ScoreVO, 그리고 학생들의 정보를 한꺼번에 담기 위한 ScoreList클래스, 그리고 마지막으로 ScoreTest(메인)클래스가 필요합니다.
저는 패키지를 만들고 그 안에서 클래스들을 선언해서 사용하였습니다.
ScoreVO (한 학생의 여러 정보를 담는 클래스)
package kr.koreait.scoreTest;
public class ScoreVO { //한 학생의 정보를 담는 ScoreVO 클래스 생성
//static으로 선언한 변수는 모든 객체에서 공유해서 사용해서 번호 메길 때 써준다.
public static int count; //ScoreVO 클래스 객체가 생성될때마다 자동으로 1씩 증가시킬 변수.
private int no; //번호
private String name; //이름
private int java; //자바점수
private int jsp; //jsp점수
private int spring; //spring점수
private int total; //총점
private double average; //평균
private int rank = 1; //석차, 석차를 기억할 기억장소의 초기치는 무조건 1로 한다.
public ScoreVO() { //기본 생성자
}
public ScoreVO(String name, int java, int jsp, int spring) {//초기화해주는 생성자
no = ++count; //자동으로 번호 생성
this.name = name;
this.java = java;
this.jsp = jsp;
this.spring = spring;
total = java + jsp +spring; //총점 합산
average = total / 3.;} //평균 구하기
public int getNo() { // GETTER SETTER 함수
return no;}
public void setNo(int no) {
this.no = no;}
public String getName() {
return name;}
public void setName(String name) {
this.name = name;}
public int getJava() {
return java;}
public void setJava(int java) {
this.java = java;}
public int getJsp() {
return jsp;}
public void setJsp(int jsp) {
this.jsp = jsp;}
public int getSpring() {
return spring;}
public void setSpring(int spring) {
this.spring = spring;}
public int getTotal() {
return total;}
public void setTotal(int total) {
this.total = total;}
public double getAverage() {
return average;}
public void setAverage(double average) {
this.average = average;}
public int getRank() {
return rank;}
public void setRank(int rank) {
this.rank = rank;}
@Override
public String toString() { //한 학생의 정보를 리턴해주는 toString() 메소드
return String.format(" %d %s %3d %3d %3d %3d %6.2f %d",
no ,name, java, jsp, spring, total, average, rank);
} //이런 형식으로 출력해준다.
}
이렇게 클래스를 구성하였습니다. GETTER SETTER은 마우스 우클릭으로 만들었고 생성자함수에서 인수를 처리할 수 있도록 저렇게 코딩해주었습니다. 마지막 toString()에서는 이 클래스의 리턴값과 리턴형식을 정해주었습니다.
ScoreList 클래스
package kr.koreait.scoreTest;
import java.util.ArrayList;
public class ScoreList { //ArrayList담는 클래스 생성
private ArrayList<ScoreVO> list = new ArrayList<ScoreVO>();
//ScoreVO 객체를 담는 ArrayList 생성
public ArrayList<ScoreVO> getList() {
return list;} //게터
public void setList(ArrayList<ScoreVO> list) {
this.list = list;} //세터
@Override
public String toString() {
String str = ""; //문자열 str 초기화
str += "==================================================\n";
str += " 번호 이름 java jsp spring 총점 평균 석차\n";
str += "==================================================\n";
// 석차를 계산한다. => 선택 정렬 방식으로 석차 계산
for (int i = 0; i < list.size(); i++)
{
for (int j = i+1; j < list.size(); j++)
{
if ( list.get(i).getTotal() > list.get(j).getTotal())
{
list.get(j).setRank(list.get(j).getRank() + 1);
}
else {
list.get(i).setRank(list.get(i).getRank() + 1);
}
}
}
for (ScoreVO vo : list) //향상된 for문
{//자료형 변수명 : 배열명
str += vo + "\n";
}
return str;
}
// 성적을 ArrayList에 저장하는 메소드
public void addScore(ScoreVO score) {
list.add(score); //add메소드로 score객체 저장
}
}
ScoreVO 객체를 담는 ScoreList클래스는 이렇게 구성하였습니다. toString() 메소드는 문자열 str을 리턴하도록 코딩하였는데요. str을 "";로 초기화를 한 뒤에 학생들의 정보를 더해서 붙여주는 방식으로 코딩하였습니다.
향상된 for문은 for(자료형 변수명 : 배열명) 으로 사용할 수 있으며, 변수의 개수만큼 실행해주는 반복문입니다.
addScore 메소드는 list에 객체를 저장해주는 역할을 하는 메소드입니다.
ScoreTest 클래스
package kr.koreait.scoreTest;
public class ScoreTest {
public static void main(String[] args) { //메인 함수
ScoreList scoreList = new ScoreList();
scoreList.addScore(new ScoreVO("홍길동", 72, 100, 99));
scoreList.addScore(new ScoreVO("임꺽정", 12, 30, 99));
scoreList.addScore(new ScoreVO("장길산", 70, 50, 99));
scoreList.addScore(new ScoreVO("성춘향", 75, 80, 99));
scoreList.addScore(new ScoreVO("이몽룡", 100, 100, 100));
System.out.println(scoreList);
}
}
메인 함수에서는 이렇게만 해주면 학생들의 정보를 넣고, 학생들의 정보를 출력해줄 수가 있습니다.
다른 클래스에서 만들어진 함수들을 사용하기 때문에 메인 클래스는 코딩이 아주 짧은 것을 확인할 수 있습니다.
한번 실행해보겠습니다.
이렇게 실행결과가 이쁘게 잘 나오는 것을 확인할 수 있습니다.
이렇게, 자바는 객체 지향 프로그래밍 언어입니다. 클래스를 얼마나 잘 다루고 객체들간의 관계를 이해하고 있는지가 굉장히 중요하겠습니다. 읽어주셔서 감사합니다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
자바 제13강 : 자바 PrintWriter 클래스로 파일 입출력 하기와 경로 지정 방식(절대, 상대) (0) | 2021.09.10 |
---|---|
자바 제12강 : 자바 랜덤 난수 (Random) 이용해서 로또 번호 뽑기 (0) | 2021.09.10 |
자바 제10강 : 자바 예외 처리 구문 (try~catch, finally) 사용하기 (0) | 2021.09.10 |
자바 제9강 : 자바 클래스 생성자 함수, getter setter 함수, toString() 함수 만들기 (0) | 2021.09.09 |
자바 제8강 : 자바 ArrayList 클래스 이용하여 배열 처리하기 (0) | 2021.09.09 |