• 검색 결과가 없습니다.

객체 배열

문서에서 객체의 표현 2 (페이지 38-50)

©

J.-H. Kang, CNU

 제 1 단계 [프로그램 11-1]

 학생 객체의 사용

 객체 배열 사용

 학급의 학생들의 정보를 저장하기 위해

실습

39

 입출력

 입력

 매번 학번과 성적을 입력 받을지 (Yes/No) 여부를 먼저 묻는다.

 Yes 이면 한 학생의 학번과 점수를 입력 받는다.

성적이 0보다 작거나 100 보다 크면 오류메시지를 내보내고, 입 력은 무시한다.

 No 이면 입력을 종료한다.

 출력

 입력된 학번과 점수와 그에 해당하는 학점을 출력한다.

 마지막에 평균점과 평균 이상인 학생수를 출력한다.

©

J.-H. Kang, CNU

 출력의 예

실습

41

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201199999

- 점수를 입력하시오: 82

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201188888

-점수를 입력하시오: 45

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201122222

-점수를 입력하시오: 93

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201155555

- 점수를 입력하시오: 102

오류: 0보다 작거나 100 보다 커서, 정상적인 점수가 아닙니다.

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201155555

-점수를 입력하시오: 66

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201133333

- 점수를 입력하시오: 87

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: N 입력을 종료합니다.

학생들의 성적 목록입니다.

학번: 201199999, 점수: 82, 학점: B 학번: 201188888, 점수: 45, 학점: F 학번: 201122222, 점수: 93, 학점: A 학번: 201155555, 점수: 66, 학점: D 학번: 201133333, 점수: 87, 학점: B 평균점수는 74.6 입니다.

평균 이상인 학생은 모두 3 명입니다.

프로그램을 종료합니다.

 Main() 에서 해야 할 일

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201199999

- 점수를 입력하시오: 82

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201188888

-점수를 입력하시오: 45

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201122222

-점수를 입력하시오: 93

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201155555

- 점수를 입력하시오: 102

오류: 0보다 작거나 100 보다 커서, 정상적인 점수가 아닙니다.

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201155555

-점수를 입력하시오: 66

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: Y - 학번을 입력하시오: 201133333

- 점수를 입력하시오: 87

? 학생정보를 입력하려면 ‘Y’를 , 입력을 종료하려면 ‘N’을 치시오: N 입력을 종료합니다.

학생들의 성적 목록입니다.

학번: 201199999, 점수: 82, 학점: B 학번: 201188888, 점수: 45, 학점: F 학번: 201122222, 점수: 93, 학점: A 학번: 201155555, 점수: 66, 학점: D 학번: 201133333, 점수: 87, 학점: B 평균점수는 74.6 입니다.

평균 이상인 학생은 모두 3 명입니다.

프로그램을 종료합니다.

(1) 학생 정보를 입력 받는다.

(3) 평균과 평균 이상인 학생수를 계산하고, 결과를 출력한다.

(2) 입력 받은 학생 정보를 출력한다.

©

J.-H. Kang, CNU

 main()의 구성

private static final int MAXSTUDENTS = 50 ; public static void main (String[] args)

{ boolean moreStudentsExist ; Student currentStudent = null ;

Student[] c1 = new Student[MAXSTUDENTS] ; //학생 정보를 위한 배열 int numberOfStudents ; // 학급의 실제 학생수

double average ; // 학급의 평균 점수

int aboveAverage ; // 평균 이상인 학생의 수 ... /* 그밖에 더 필요한 변수들을 선언한다. */

/* (1) 학생 정보를 입력 받는다 */

...

/* (2) 입력 받은 학생 정보를 출력한다. */

...

/* (3) 평균과 평균 이상인 학생수를 계산하고, 결과를 출력한다. */

...

System.out.println(“프로그램을 종료합니다.”) ; }

실습

43

 학생정보 입력 방법

public static void main (String[] args) { ...

/* (1) 학생 정보를 입력 받는다 */

moreStudentsExist = inputMoreStudentsExist() ;

while ( moreStudentsExist && numberOfStudents < MAXSTUDENTS ) { studentNo = inputStudentNo() ;

score = inputScore() ;

if ( score < 0 || score > 100 ) {

System.out.println(...) ; // 잘못된 점수이므로 오류 메시지를 내보낸다.

} else {

currentStudent = new Student() ;

currentStudent.setStudentNo(studentNo) ; currentStudent.setScore(score) ;

c1[numberOfStudents] = currentStudent ; numberOfStudents++ ;

} moreStudentsExist = inputMoreStudentsExist() ; }

/* (2) 입력 받은 학생 정보를 출력한다. */

...

©

J.-H. Kang, CNU

 입력 관련 함수

 private boolean inputMoreStudentsExist()

필요한 입력 안내 메시지를 먼저 내보낸다.

입력 계속 여부를 판단하기 위한 ‘Y’, ‘y’ 또는 ’N’, ‘n’을 입력을 받는다.

return value: ‘Y’ 나 ‘y’이면 true, 아니면 false를 얻는다.

 private String inputStudentNo()

필요한 입력 안내 메시지를 먼저 내보낸다.

키보드에서 학번을 입력 받는다.

return value: 입력된 학번을 보관한 String 객체의 소유권을 얻는다

 private int inputScore()

필요한 입력 안내 메시지를 먼저 내보낸다.

키보드에서 점수를 입력 받는다.

return value: 입력 받은 점수

실습

45

 평균, 평균이상의 학생 구하여 출력하기

 다음과 같은 순서로 처리한다.

 성적의 합계를 구한다.

while loop 사용:

 학생 수만큼 반복하면서 합계를 얻는다.

 평균을 구한다.

 평균 이상의 학생수를 센다.

while loop 사용:

 학생 수만큼 반복하면서 평균 이상인 학생 수를 얻는다.

©

J.-H. Kang, CNU

 Class "Student [1]

public class Student { // 비공개 속성들

private String _studentNo ; private int _score ;

// 생성자

public Student ()

{ this._studentNo = null ; this._score = 0 ;

}

// 공개함수의 구현 ...

} // End of Class “Student”

실습

47

 Class "Student [2]

public class Student { // 비공개 속성들 ...

// 생성자 ...

// 공개함수의 구현

// _score 관련 공개함수들

public void setScore (int aScore) // 주어진 점수를 저장한다 { this._score = aScore ;

}

public int score () // 현재 가지고 있는 점수를 사용자에게 돌려준다 { return this._score ;

}

public char grade() // 현재 가지고 있는 점수에 해당하는 학점을 돌려준다 { ... // 점수에 합당한 학점을 계산하여 돌려준다.

}

// _studentNo 관련 공개함수들 ...

} // End of Class “Student”

©

J.-H. Kang, CNU

 Class "Student [3]

public class Student { // 비공개 속성들 ...

// 생성자 ...

// 공개함수의 구현

// _score 관련 공개함수들 ...

// _studentNo 관련 공개함수들

public void setStudentNo ( String aStudentNo ) { // setter this._studentNo = aStudentNo ;

}

public String studentNo() { // getter return this._studentNo ;

}

} // End of Class “Student”

실습

49

[프로그램 11-2]

문서에서 객체의 표현 2 (페이지 38-50)

관련 문서