1. 클래스 다루기
클래스(class)
- 여러 형의 요소를 조합하여 만든 자료구조
ex)
//클래스 XYZ
class XYZ {
int x;
long y;
double z;
}
- 클래스 XYZ는 3개의 데이터 요소를 가지고 있음
- 데이터 요소를 필드(field)라고 함
- 클래스형 변수를 사용할 때는 먼저 클래스형 변수(실체를 참조하는 변수)를 만들고, 그와 동시에 실체인 클래스 인스턴스를 생성
XYZ a; //XYZ형의 클래스형 변수 a 선언
a = new XYZ(); //XYZ형의 클래스 인스턴스를 생성하고 참조하는 곳을 대입
- 클래스형 변수 a가 참조하는 클래스 인스턴스 안의 필드는 멤버 접근 연산자 (.)를 사용하는 a.x, a.y, a.z로 접근
2. 클래스에서 배열 구현하기
- 신체검사 데이터용 클래스 배열에서 평균 키와 시력의 분포를 구함
import java.util.Scanner;
public class PhysicalExamination {
static final int VMAX = 21; //시력 분포
static class PhyscData {
String name;
int height;
double vision;
//생성자
PhyscData(String name, int height, double vision){
this.name = name;
this.height = height;
this.vision = vision;
}
}
//키의 평균값을 구함
static double aveHeight(PhyscData[] dat) {
double sum = 0;
for(int i=0; i<dat.length; i++)
sum+=dat[i].height;
return sum/dat.length;
}
//시력 분포를 구함
static void distVision(PhyscData[] dat, int[] dist) {
int i=0;
dist[i]=0;
for(i=0; i<dat.length; i++)
if(dat[i].vision>=0.0 && dat[i].vision<=VMAX /10.0)
dist[(int)(dat[i].vision*10)]++;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
PhyscData[] x = {
new PhyscData("강민하", 162,0.3),
new PhyscData("김찬우", 173,0.7),
new PhyscData("박준서", 175,2.0),
new PhyscData("강민하", 171,1.5),
new PhyscData("강민하", 168,0.4),
new PhyscData("강민하", 174,1.2),
new PhyscData("강민하", 169,0.8),
};
int[] vdist = new int[VMAX];
System.out.println("★신체검사 리스트★");
System.out.println("이름 키 시력");
System.out.println("---------------");
for(int i=0; i<x.length; i++)
System.out.printf("%-8s%3d%5.1f\n", x[i].name, x[i].height, x[i].vision);
System.out.printf("\n평균키:%5.1fcm\n",aveHeight(x));
distVision(x, vdist); //시력 분포를 구함
System.out.println("\n시력 분포");
for(int i=0; i<VMAX; i++)
System.out.printf("%3.1f~: %2d명\n",i/10.0, vdist[i]);
}
}
'Java > 자료구조' 카테고리의 다른 글
3-2 선형 검색 (1) | 2024.02.01 |
---|---|
3-1 검색 알고리즘 (0) | 2024.01.31 |
2-1 배열 (0) | 2024.01.28 |
1-2. 반복 (1) | 2024.01.27 |
1-1 알고리즘이란? (1) | 2024.01.25 |