기초JAVA 11강 - 클래스

Whatever·2021년 9월 23일
0

기초 JAVA

목록 보기
11/26

사용자 정의 데이터 타입

  • 데이터의 최종 진화 형태이다.(기본형-> 배열 -> 클래스)
    클래스 - 서로 다른 타입의 데이터를 묶어서 사용 가능 + 그 데이터를 가지고 무엇을 할 것인지 기능(메서드)을 추가 구성가능
  • 서로 다른 타입의 데이터를 묶어서 사용하는 것이다.
  • 변수와 메서드로 구성할 수 있다.

클래스를 초기화하는 방법:
참조형 타입을 초기화할 때는 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]);
	}

0개의 댓글

관련 채용 정보