©
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”
실습