Learn/KH정보교육원

[KH정보교육원 당산] 13일차 (예제 마무리 및 배운거를 토대로 시험.. )

Dahoon06 2021. 3. 26. 11:19
728x90
반응형

예제) 다음 데이터를 가지고 아래 문제들을 HTML파일로 만들어 제출하기

 

1. 외국인 가장 많이 거주하는 지역은?

2. 한국인이 외국인보다 많이 거주하는 지역은 ?

3. 나이가 많으신 분을 위해 추천하고 싶은 지역과 그 이유는?

   단, 이 분은 민족주의 사관과 개인주의 성격을 가지고 있다)​ 

 

사용할 데이터(엑셀파일)

먼저 엑셀 파일을 사용하기 위한 외부라이브러리를 설정해줘야한다.( jxl.jar => 엑셀파일을 사용하기 위한 라이브러리 )

 

ExcelReaderClass를 작성하기 전에 필요한 데이터 먼저 작성

 

PopulationClass

외부에서 접근하지 못하게 private을 주고 엑셀파일을 읽어들일때는 String 타입으로 넘어오기때문에 매개변수를 String 타입으로 받은 후

원래타입인 정수형으로 형변환 시켰다.

 

우리한테 필요한 데이터는 자치구, 한국인 총인원, 외국인 총인원 이기때문에 불피요한 데이터는 불러오지 않았다.

 

 

DataClass

 

객체 생성없이 바로 호출할 수 있도록 public static으로 만들었고 Population의 개체를 사용할 것이기에 예약타입을 <PopulationClass>으로 만들었다.

 

 

MainClass로 넘어가 엑셀 파일의 위치를 지정해 주면 엑셀 파일읽기 준비단계는 끝난다.

String 변수명 = "파일 경로";  =>  값 넘겨주기

 

ExcelReaderClass

파일을 읽기만 할것이기에 Workbook 클래스만 사용

while문 안의 try~catch~  =>  반복문 안에서도 예외처리를 한 이유는 데이터를 한줄씩 읽어내는데 마지막 데이터를 읽은 후에도 반복을 멈추지 않아 오류가 나와 프로그램을 강제 종료시키기 때문!!

Cell 클래스 ( 열, 행 )

 

* 테스트 코드는 말그대로 테스트용!! 반드시 확인 후 지워주거나 주석처리해준다!! 안그러면 계속 실행됨

 

 

MethodClass

1번 문제 

최대값을 가진 지역 하나만 출력 하는것이기에 정렬 방식을 사용하지 않고 최대값을 구한다.

선언된 임시 변수 는 값을 비교하기 위해서 생성된것!!

 

2번문제

인덱스 번호에 맞는 값을 비교해주면 준다.

비교된 값을 지역구로 받을 것이기때문에 String 타입을 줘야하는데 전체 데이터 수가 몇개인지 모른다는 가정하에 배열 크기를 자동으로 조절해주는 ArrayList사용 

 

3번문제

최소값 구하기

코드로는 1번문제의 코드에서 연산 부호만 바꿔주면 되지만 temp의 초기값이 0이기 때문에 조건문 아래의 코드는 실행되지 않는다.

그렇기 때문에 데이터값보다 큰 수로 초기화 해줌으로써 조건문이 실행되게된다.

문제에서의 민족주의 => 외국인 수가 제일 적은 낮은 지역,, 개인주의 => 한국인 수가 적은 지역으로 해서 구했다.

둘을 합하여 전체 지역구중에 인원이 가장 없는곳으로 정했다.

 

MainClass

메인으로 넘어와서 HTML tag생성과 HTML파일 생성 준비를 한다.

 

PrintClass

 

이번 프로젝트에서는 각 클래스별로 역할을 완전히 분담해줬다.

MethodClass에서는 기능의 역할만 하고

PrintClass에서는 출력을 위한 생성 역할을 하고

MainClass에서 출력

 

생성된 HTML파일 실행

 

 

728x90
반응형