사용자 정의 데이터 타입
클래스를 초기화하는 방법:
참조형 타입을 초기화할 때는 new라는 예약어를 사용
=> new 타입-클래스명(); => 메서드
클래스명.변수
패키지.이름 = >패키지의 하위패키지
//기본형
int kor;
int eng;
int math;
int sum;
double avg;
//배열
int[] scores;
int sum2;
double avg2;
//클래스
Student student = new Student(); //객체생성 / 인스턴스화
student(변수) = 100번지(주소)
100번지
Student { //객체 / 인스턴스
kor, eng, math, sum, avg, name =>메모리에 저장된 변수 : 객체
}
student.kor = 80;
student.eng = 90;
student.math = 70;
student.sum = student.kor + student.eng + student.math;
student.avg = student.sum / 3.0;
student.name = "홍길동";
System.out.println(student.name + "의 합계 : " + student.sum + " / 평균 : " + student.avg);
class Student{
int kor;
int eng;
int math;
int sum;
double avg;
String name;
} // 클래스선언
클래스도 하나의 데이터임 - 사용자정의 데이터타입
String[] studentNames =
{ "강나영", "강동환", "강태영", "곽지훈", "김서윤"
, "김영훈", "김진석", "김충신", "박슬기", "박채린"
, "손영태", "손영흔", "안정연", "이선우", "이수보"
, "이주홍", "이중호", "임현정", "장유진", "정신애"
, "조수경", "조하영", "조혜민", "허민정", "박지은"};
Student[] students = new Student[studentNames.length]; //student를 저장할 공간을 만듦
for(int i = 0; i < 25; i++){
Student student= new Student(); //객체생성 25개의 객체가 생성됨
student.kor = (int)(Math.random() * 101);
student.eng = (int)(Math.random() * 101);
student.math = (int)(Math.random() * 101);
student.name = studentNames[i];
student.rank = 1;
student.sum = student.kor + student.eng + student.math;
student.avg = Math.round((double)student.sum / 3.0 * 10) / 10.0;
students[i] = student; //클래스 배열에 객체의 주소값이 저장됨
}
//성적처리 프로그램을 완성해주세요.
//합계, 평균
for(int i = 0;i < students.length; i++){
students[i].sum = students[i].kor + students[i].eng + students[i].math;
students[i].avg = Math.round(students[i].sum / 3.0 * 100) / 100.0;
}
//석차
for(int i = 0; i < students.length;i++){
for(int j = 0; j < students.length; j++){
if(students[i].sum < students[j].sum){
students[i].rank++;
}
}
}
//석차순 정렬
for(int i = 0; i < students.length - 1; i++){
int min = i;
for(int j = i + 1; j < students.length; j++){
if(students[j].rank < students[min].rank){
min = j;
}
}
Student temp = students[i];
students[i] = students[min];
students[min] = temp;
}
//과목별 합계, 평균
int[] Sums = new int[3];
for(int i = 0; i < students.length; i++){
Sums[0] += students[i].kor;
Sums[1] += students[i].eng;
Sums[2] += students[i].math;
}
double[] avgs = new double[3];
for(int i = 0; i < avgs.length; i++){
avgs[i] = Math.round((double)Sums[i] / students.length * 100)/100.0;
}
//출력
System.out.println("이름\t국어\t영어\t수학\t합계\t평균\t석차");
for(int i = 0; i < 25; i++){
System.out.print(students[i].name +"\t"
+ students[i].kor + "\t"
+ students[i].eng + "\t"
+ students[i].math +"\t"
+ students[i].sum +"\t"
+ students[i].avg +"\t"
+ students[i].rank);
System.out.println();
}
System.out.print("과목합계");
for(int i = 0; i <Sums.length; i++){
System.out.print("\t"+Sums[i]);
}
System.out.print("\n과목평균");
for(int i = 0; i <avgs.length; i++){
System.out.print("\t" + avgs[i]);
}