일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- helm-chart
- Redux Toolkit
- 명시적 타입 변환
- jotai
- Compound Component
- Custom Hook
- TypeScript
- Recoil
- 주니어개발자
- Render Queue
- JavaScript
- task queue
- useLayoutEffect
- prettier-plugin-tailwindcss
- zustand
- Sparkplug
- docker
- react
- 타입 단언
- type assertion
- 암묵적 타입 변환
- 프로세스
- useCallback
- 클라이언트 상태 관리 라이브러리
- AJIT
- Microtask Queue
- CS
- Headless 컴포넌트
- 좋은 PR
- linux 배포판
- Today
- Total
구리
TIL_210318_클래스 생성, static 변수 본문
- 오전 수업 문제
- 콘솔창으로부터 검색방법 ( 글제목, 작성자, 전체검색(글제목 및 작성자)) 3가지와 검색어를 입력 받고 검색 내용 출력
- 클래스명 : BoardClass(책에 대한 기본 정보), DataClass(실제 데이터 저장 데이터), MainClass(입출력), MethodClass(검색 관련 메서드)
- BoardClass 변수는 글번호(no), 글제목(title), 작성자(writer), 조회수(hit), DataClass의 데이터 타입은 ArrayList<BoardClass>이다.
< 문제 풀이 방법 >
- MainClass에 입력 Scanner 클래스로 입력 받음
- Method 클래스에 검색관련 메서드 3개, 검색 방법에 따른 검색 결과 반환 메서드 추가
- Main클래스에 Method클래스 메서드를 이용해서 결과 받기
(문제 풀땐 먼저 큰 흐름을 그림으로 그리고 클래스 작성하기)
<Board Class>
package com.bjy;
public class BoardClass {
// 글번호 (no), 글제목(title), 작성자(writer), 조회수(hit)
int no = 0;
String title = "";
String writer = "";
int hit = 0;
BoardClass() {}
BoardClass(int no, String title, String writer, int hit) {
this.no = no;
this.title = title;
this.writer = writer;
this.hit = hit;
}
}
<Data Class>
package com.bjy;
import java.util.ArrayList;
public class DataClass {
ArrayList<BoardClass> boardList = new ArrayList<BoardClass>();
public DataClass() {
this.initData();
}
public void initData() {
this.boardList.add(new BoardClass(11968, "2020 07 08 클래스연습데이터7 (student, takes)", "김광식", 25));
this.boardList.add(new BoardClass(11967, "2020 07 08 클래스연습데이터5 (학과/학생)", "김정현", 62));
this.boardList.add(new BoardClass(11965, "2020 07 07 클래스 연습 데이터 4 (부서/사원)", "김현정", 60));
this.boardList.add(new BoardClass(11966, "2020 07 07 클래스 연습 데이터 4 ", "김성주", 34));
this.boardList.add(new BoardClass(11964, "2020 07 07 클래스 연습 데이터 3 (도서) ", "이성주", 65));
this.boardList.add(new BoardClass(11963, "2020 07 06 클래스 연습 데이터 2 (학생) ", "김현정", 44));
this.boardList.add(new BoardClass(11962, "2020 07 06 클래스 연습 데이터 (교수) ", "백태성", 48));
this.boardList.add(new BoardClass(11961, "2020 07 03 3가지 문제를 메서드 처리 ", "김광식", 58));
this.boardList.add(new BoardClass(11960, "2020 07 03 split() 와 클래스 연습 데이터", "김정현", 54));
this.boardList.add(new BoardClass(11959, "2020 07 02 마지막 3가지 문제 ", "박광수", 92));
this.boardList.add(new BoardClass(11958, "2020 07 02 split test ", "김현정", 53));
this.boardList.add(new BoardClass(11957, "2020 07 02 제어문 연습데이터 ", "김정현", 64));
this.boardList.add(new BoardClass(11956, "코드를 엉망으로 작성하는 법 ", "박광수", 43));
this.boardList.add(new BoardClass(11955, "유지 보수 어렵게 코딩하는 방법 ", "김광식", 59));
this.boardList.add(new BoardClass(11954, "2020 07 01 Java Platform Standard Edition 8 Documentation ","Amor vincit omnia", 29));
this.boardList.add(new BoardClass(11641, "2019 01 30 변수, 배열, 객체, 클래스 (기초 문법 간단 요약) ", "박광수", 91));
this.boardList.add(new BoardClass(11640, "2019 01 30 변수, 배열, 객체, 클래스 (기초 문법 간단 요약) ", "김성주", 95));
this.boardList.add(new BoardClass(11639, "2019 01 30 기본 지식 정리 ", "김성주", 70));
}
} // end of DataClass
- ArrayList<BoardList> boardList = new ArrayList<BoardList>BoardClass(); 배열 생성 후 각 요소에 넣을 객체들은 initData메서드 안에서 생성하였다. (클래스 영역에선 선언만 가능하고 식 자체는 메서드 영역에서 가능 !)
<MethodClass>
package com.bjy;
import java.util.*;
public class MethodClass {
public MethodClass() {}
// 입력된 검색 방법 유효성 메서드
public boolean typeCheck(String type) {
if(type.equalsIgnoreCase("T")|| type.equalsIgnoreCase("W") || type.equalsIgnoreCase("A")) {
return true;
} else {
return false;
}
}
// 검색 방법에 따라 검색 메서드 호출하고, 그 결과를 MainCLass에 반환하는 메서드
public ArrayList<BoardClass> search(String[] searchTypeAndWord) {
ArrayList<BoardClass> searchList = new ArrayList<BoardClass>(); // 검색결과 저장할 변수
if(searchTypeAndWord[0].equalsIgnoreCase("T")) { // 제목으로 검색 메서드 호출
this.searchTitle(searchTypeAndWord[1], searchList);
}else if(searchTypeAndWord[0].equalsIgnoreCase("W")) { // 작성자로 검색 메서드 호출
this.searchWriter(searchTypeAndWord[1], searchList);
}else { // 전체로 검색하는 메서드 호출
this.searchTotal(searchTypeAndWord[1], searchList);
}
return searchList;
}
// 글제목으로 검색하는 메서드
public void searchTitle (String searchword, ArrayList<BoardClass> searchList) {
ArrayList<BoardClass> boardList = new DataClass().boardList; // 검색데이터
for(int i=0;i<boardList.size();i++) {
if(boardList.get(i).title.contains(searchword)) {
searchList.add(boardList.get(i));
}
}
}
// 작성자로 검색하는 메서드
public void searchWriter (String searchword, ArrayList<BoardClass> searchList) {
ArrayList<BoardClass> boardList = new DataClass().boardList; // 검색데이터
for(int i=0;i<boardList.size();i++) {
if(boardList.get(i).writer.contains(searchword)) {
searchList.add(boardList.get(i));
}
}
}
// 전체 검색(글제목 또는 작성자) 메서드
public void searchTotal (String searchword, ArrayList<BoardClass> searchList) {
ArrayList<BoardClass> boardList = new DataClass().boardList; // 검색데이터
for(int i=0;i<boardList.size();i++) {
if(boardList.get(i).writer.contains(searchword) || boardList.get(i).title.contains(searchword)) {
searchList.add(boardList.get(i));
}
}
}
} // end of MethodClass
- 검색 결과 저장하는 변수 타입 ArrayList로 한 이유 ? 검색어에 따른 검색 결과가 얼마나 나올지 모르기에 길이가 정해진 일반 배열보다는 크기를 지정하지 않아도 쉽게 추가가 가능한 ArrayList로 선택
<Main Class>
package com.bjy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
String[] searchTypeAndWord = { "","" };
Scanner s = new Scanner(System.in);
// 검색 방법 입력, 잘못 입력하면 계속 반복
System.out.println("검색 방법을 입력해주세요. (글제목 : T, 작성자 : W, 전체 검색 : A) >");
System.out.println("========================================");
String type = s.next();
boolean checked = false;
checked = new MethodClass().typeCheck(type);
// 검색방법이 올바르게 입력되었는지 유효성 검사
while(!checked) {
System.out.println("검색 방법을 잘못 입력하였습니다. 다시 입력해주세요");
type = s.next();
checked = new MethodClass().typeCheck(type);
}
searchTypeAndWord[0] = type;
System.out.println("========================================");
System.out.println("검색어를 입력해주세요");
searchTypeAndWord[1] = s.next();
System.out.println("=======================================");
System.out.printf("%s, %s으로 찾은 결과입니다.\n", searchTypeAndWord[0], searchTypeAndWord[1]);
// 검색 메서드 호출 ( 굳이 객체 따로 생성해서 변수에 저장할 필요 X)
ArrayList<BoardClass> resultList = new MethodClass().search(searchTypeAndWord);
if(resultList.size()<1) {
System.out.println("검색된 결과가 없습니다.");
} else {
for(int i=0;i<resultList.size();i++) {
System.out.print(resultList.get(i).no + "\t");
System.out.print(resultList.get(i).title + "\t");
System.out.print(resultList.get(i).writer + "\t");
System.out.print(resultList.get(i).hit + "\n");
}
}
} // end of main method
}
큰 흐름으로 보면 다음과 같으며 코드를 짜기 전 큰 흐름과 어떤 변수들을 넘길지, 어떤 메서드를 생성해야 할지 적은 후 코드 짜보는 것이 좋다. ( 아래의 사진은 위의 문제 풀이 최종 단계의 코드 전 단계이므로 약간의 차이가 있을 수 있다)
2. 오후 수업 문제
- 콘솔창으로부터 입력받은 값("IT영자지")을 이용하여 해당 신문들의 정보와 갯수를 출력
- 단 검색메서드는 MethodClass에서 작성하고 출력 메서드는 PrintClass에 작성한다.
- 신문들의 정보 출력시 image : 확장자 포함하여 출력 ex : nsd16550796.gif
- NewsCLass 변수 : press, url(맨뒤의 숫자들만 저장), image(마지막 확장자는 삭제 후 저장), kind
(모든 변수 타입은 String)
- url : 전체 문자열 출력 ex : newsstand.naver.com/032
<MainClass>
package com.bjy;
import java.util.ArrayList;
import java.util.Scanner;
public class MainClass {
public static void main(String[] args) {
System.out.println("찾고 싶은 신문의 종류를 입력하세요");
Scanner scan = new Scanner(System.in);
String searchWord = scan.next();
// 검색하여 해당 정보들 리스트에 따로 저장
ArrayList<NewsClass> searchList = new MethodClass().search(searchWord);
// 검색 정보가 저장된 리스트를 출력
new PrintClass().searchPrint(searchList, searchWord);
}
}
<NewsClass>
package com.bjy;
public class NewsClass {
String press;
String image;
String url;
String kind;
NewsClass() {}
NewsClass(String press, String image, String url, String kind) {
this.press = press;
String[] file = image.split("[.]");
this.image = file[0];
PrintClass.extension = "." + file[1];
// split하면 해당 기호는 사라지기에 extension에 다시 삽입함.
String[] urlSplit = url.split("/");
this.url = urlSplit[1];
PrintClass.pathURL = urlSplit[0] + "/";
this.kind = kind;
}
}
- NewsClass 변수들을 그대로 넣는 것이 아닌 확장자와 주소를 제외하고 초기화 해줘야 해서 불필요한 부분들은 PrintClass의 static 변수값으로 저장하고 나중에 출력할때 재사용했다.
<DataClass>
package com.bjy;
import java.util.ArrayList;
public class DataClass {
ArrayList<NewsClass> newsData = new ArrayList<NewsClass>();
public DataClass() {
this.initData();
}
private void initData() {
newsData.add(new NewsClass("ScienceTimes", "nsd113446808.gif", "newsstand.naver.com/355", "매거진전문지"));
newsData.add(new NewsClass("경향신문", "nsd16500796.gif", "newsstand.naver.com/032", "종합지"));
newsData.add(new NewsClass("국민일보", "nsd113224489.gif", "newsstand.naver.com/005", "종합지"));
newsData.add(new NewsClass("동아일보", "nsd162737318.gif", "newsstand.naver.com/020", "종합지"));
newsData.add(new NewsClass("서울신문", "nsd165611664.gif", "newsstand.naver.com/081", "종합지"));
newsData.add(new NewsClass("석간내일신문", "nsd162522149.gif", "newsstand.naver.com/086", "종합지"));
newsData.add(new NewsClass("석간문화일보", "nsd11502601.gif", "newsstand.naver.com/021", "종합지"));
newsData.add(new NewsClass("세계일보", "nsd104440320.gif", "newsstand.naver.com/022", "종합지"));
newsData.add(new NewsClass("조선일보", "nsd14948476.gif", "newsstand.naver.com/023", "종합지"));
newsData.add(new NewsClass("중앙일보", "nsd111948440.gif", "newsstand.naver.com/025", "종합지"));
newsData.add(new NewsClass("한계레", "nsd185116392.gif", "newsstand.naver.com/028", "종합지"));
newsData.add(new NewsClass("한국일보", "nsd141114194.gif", "newsstand.naver.com/038", "종합지"));
newsData.add(new NewsClass("NEWis", "nsd165223437.gif", "newsstand.naver.com/003", "방송통신"));
newsData.add(new NewsClass("jijicom", "nsd112912516.gif", "newsstand.naver.com/376", "방송통신"));
newsData.add(new NewsClass("한국경제", "nsd10118864.gif", "newsstand.naver.com/215", "방송통신"));
newsData.add(new NewsClass("KBS", "nsd164033826.gif", "newsstand.naver.com/056", "방송통신"));
newsData.add(new NewsClass("MBC", "nsd1453778.gif", "newsstand.naver.com/214", "방송통신"));
newsData.add(new NewsClass("MBN", "nsd163758547.gif", "newsstand.naver.com/057", "방송통신"));
newsData.add(new NewsClass("SBS", "nsd183257911.gif", "newsstand.naver.com/055", "방송통신"));
newsData.add(new NewsClass("YTN", "nsd17425192.gif", "newsstand.naver.com/052", "방송통신"));
newsData.add(new NewsClass("매일경제", "nsd113526120.gif", "newsstand.naver.com/009", "경제지"));
newsData.add(new NewsClass("머니투데이", "nsd113754824.gif", "newsstand.naver.com/008", "경제지"));
newsData.add(new NewsClass("서울경제", "nsd15338959.gif", "newsstand.naver.com/011", "경제지"));
newsData.add(new NewsClass("아시아경제", "nsd165753754.gif", "newsstand.naver.com/277", "경제지"));
newsData.add(new NewsClass("이데일리", "nsd111247840.gif", "newsstand.naver.com/018", "경제지"));
newsData.add(new NewsClass("ChosunBiz", "nsd19334215.gif", "newsstand.naver.com/366", "경제지"));
newsData.add(new NewsClass("파이낸셜뉴스", "nsd141641302.gif", "newsstand.naver.com/014", "경제지"));
newsData.add(new NewsClass("한국경제", "nsd162034351.gif", "newsstand.naver.com/015", "경제지"));
newsData.add(new NewsClass("해럴드경제", "nsd182749494.gif", "newsstand.naver.com/016", "경제지"));
newsData.add(new NewsClass("노컷뉴스", "nsd101424267.gif", "newsstand.naver.com/079", "인터넷"));
newsData.add(new NewsClass("NEWDAILY", "nsd102245777.gif", "newsstand.naver.com/327", "인터넷"));
newsData.add(new NewsClass("데일리안", "nsd184410246.gif", "newsstand.naver.com/368", "인터넷"));
newsData.add(new NewsClass("미디어오늘", "nsd124110953.gif", "newsstand.naver.com/006", "인터넷"));
newsData.add(new NewsClass("OhmyNews", "nsd102039590.gif", "newsstand.naver.com/047", "인터넷"));
newsData.add(new NewsClass("PRESSian", "nsd184630885.gif", "newsstand.naver.com/002", "인터넷"));
newsData.add(new NewsClass("디지털타임스", "nsd144911195.gif", "newsstand.naver.com/029", "IT영자지"));
newsData.add(new NewsClass("블로터닷넷", "nsd16353971.gif", "newsstand.naver.com/293", "IT영자지"));
newsData.add(new NewsClass("아이뉴스24", "nsd113110902.gif", "newsstand.naver.com/031", "IT영자지"));
newsData.add(new NewsClass("월스트리트저널", "nsd16110689.gif", "newsstand.naver.com/372", "IT영자지"));
newsData.add(new NewsClass("전자신문", "nsd11405830.gif", "newsstand.naver.com/030", "IT영자지"));
newsData.add(new NewsClass("JOONGANG DAILY", "nsd113635939.gif", "newsstand.naver.com/330", "IT영자지"));
newsData.add(new NewsClass("Net Korea", "nsd18341092.gif", "newsstand.naver.com/092", "IT영자지"));
newsData.add(new NewsClass("THE KOREA TIMES", "nsd92244365.gif", "newsstand.naver.com/040", "IT영자지"));
newsData.add(new NewsClass("The Korea Herald", "nsd183039979.gif", "newsstand.naver.com/044", "IT영자지"));
newsData.add(new NewsClass("KBS WORLD", "nsd14465916.gif", "newsstand.naver.com/326", "IT영자지"));
newsData.add(new NewsClass("마이데일리", "nsd113852954.gif", "newsstand.naver.com/117", "스포츠연예"));
newsData.add(new NewsClass("스포츠동아", "nsd16247594.gif", "newsstand.naver.com/314", "스포츠연예"));
newsData.add(new NewsClass("스포츠서울", "nsd184854466.gif", "newsstand.naver.com/073", "스포츠연예"));
newsData.add(new NewsClass("스포츠조선", "nsd184717404.gif", "newsstand.naver.com/076", "스포츠연예"));
newsData.add(new NewsClass("sportalkorea", "nsd16579942.gif", "newsstand.naver.com/139", "스포츠연예"));
newsData.add(new NewsClass("일간스포츠", "nsd113052387.gif", "newsstand.naver.com/241", "스포츠연예"));
newsData.add(new NewsClass("OSEN", "nsd102852391.gif", "newsstand.naver.com/109", "스포츠연예"));
newsData.add(new NewsClass("GameMeca", "nsd183724.gif", "newsstand.naver.com/356", "매거진전문지"));
newsData.add(new NewsClass("과학동아", "nsd165049622.gif", "newsstand.naver.com/363", "매거진전문지"));
newsData.add(new NewsClass("jungle", "nsd165310840.gif", "newsstand.naver.com/345", "매거진전문지"));
newsData.add(new NewsClass("Software", "nsd113744707.gif", "newsstand.naver.com/357", "매거진전문지"));
newsData.add(new NewsClass("법률신문", "nsd165524289.gif", "newsstand.naver.com/122", "매거진전문지"));
newsData.add(new NewsClass("ScienceTimes", "nsd113446808.gif", "newsstand.naver.com/355", "매거진전문지"));
newsData.add(new NewsClass("소년한국일보", "nsd102746161.gif", "newsstand.naver.com/329", "매거진전문지"));
newsData.add(new NewsClass("STYLECOM", "nsd18366175.gif", "newsstand.naver.com/367", "매거진전문지"));
newsData.add(new NewsClass("시사IN Live", "nsd182936757.gif", "newsstand.naver.com/308", "매거진전문지"));
newsData.add(new NewsClass("씨네21", "nsd185025147.gif", "newsstand.naver.com/140", "매거진전문지"));
newsData.add(new NewsClass("Ablenews", "nsd184148949.gif", "newsstand.naver.com/328", "매거진전문지"));
newsData.add(new NewsClass("ELLE", "nsd16411268.gif", "newsstand.naver.com/354", "매거진전문지"));
newsData.add(new NewsClass("여성신문", "nsd164815489.gif", "newsstand.naver.com/310", "매거진전문지"));
newsData.add(new NewsClass("CARLIFE", "nsd135857948.gif", "newsstand.naver.com/362", "매거진전문지"));
newsData.add(new NewsClass("조세신문", "nsd101830214.gif", "newsstand.naver.com/123", "매거진전문지"));
newsData.add(new NewsClass("채널예스", "nsd14034411.gif", "newsstand.naver.com/361", "매거진전문지"));
newsData.add(new NewsClass("코메디닷컴", "nsd14156354.gif", "newsstand.naver.com/296", "매거진전문지"));
newsData.add(new NewsClass("한경BUSINESS", "nsd114627265.gif", "newsstand.naver.com/050", "매거진전문지"));
newsData.add(new NewsClass("한국대학신문", "nsd18493839.gif", "newsstand.naver.com/384", "매거진전문지"));
newsData.add(new NewsClass("헬스조선", "nsd17329660.gif", "newsstand.naver.com/346", "매거진전문지"));
newsData.add(new NewsClass("EBS", "nsd145514832.gif", "newsstand.naver.com/344", "매거진전문지"));
newsData.add(new NewsClass("PC사랑", "nsd15129878.gif", "newsstand.naver.com/364", "매거진전문지"));
newsData.add(new NewsClass("강원도민일보", "nsd16493440.gif", "newsstand.naver.com/335", "지역지"));
newsData.add(new NewsClass("강원일보", "nsd18354817.gif", "newsstand.naver.com/087", "지역지"));
newsData.add(new NewsClass("경기일보", "nsd142922938.gif", "newsstand.naver.com/339", "지역지"));
newsData.add(new NewsClass("경남일보", "nsd11120405.gif", "newsstand.naver.com/333", "지역지"));
newsData.add(new NewsClass("경북일보", "nsd103125356.gif", "newsstand.naver.com/337", "지역지"));
newsData.add(new NewsClass("경인일보", "nsd75053515.gif", "newsstand.naver.com/338", "지역지"));
newsData.add(new NewsClass("광주일보", "nsd113635473.gif", "newsstand.naver.com/083", "지역지"));
newsData.add(new NewsClass("국제신문", "nsd11332053.gif", "newsstand.naver.com/332", "지역지"));
newsData.add(new NewsClass("대전일보", "nsd11342450.gif", "newsstand.naver.com/089", "지역지"));
newsData.add(new NewsClass("매일신문", "nsd184317799.gif", "newsstand.naver.com/088", "지역지"));
newsData.add(new NewsClass("부산일보", "nsd8215253.gif", "newsstand.naver.com/082", "지역지"));
newsData.add(new NewsClass("영남일보", "nsd165845221.gif", "newsstand.naver.com/385", "지역지"));
newsData.add(new NewsClass("울산메일", "nsd14643703.gif", "newsstand.naver.com/386", "지역지"));
newsData.add(new NewsClass("인천일보", "nsd14814726.gif", "newsstand.naver.com/387", "지역지"));
newsData.add(new NewsClass("전남일보", "nsd14941869.gif", "newsstand.naver.com/388", "지역지"));
newsData.add(new NewsClass("전북일보", "nsd183759971.gif", "newsstand.naver.com/336", "지역지"));
newsData.add(new NewsClass("제주도민일보", "nsd19513821.gif", "newsstand.naver.com/389", "지역지"));
newsData.add(new NewsClass("제주의소리", "nsd115524760.gif", "newsstand.naver.com/334", "지역지"));
newsData.add(new NewsClass("중도일보", "nsd17122649.gif", "newsstand.naver.com/390", "지역지"));
newsData.add(new NewsClass("충청일보", "nsd162144955.gif", "newsstand.naver.com/391", "지역지"));
newsData.add(new NewsClass("충청투데이", "nsd14118621.gif", "newsstand.naver.com/331", "지역지"));
newsData.add(new NewsClass("OBS", "nsd101932455.gif", "newsstand.naver.com/340", "지역지"));
}
}
<Method Class>
package com.bjy;
import java.util.ArrayList;
public class MethodClass {
public MethodClass() {}
public ArrayList<NewsClass> search(String word) {
ArrayList<NewsClass> searchList = new ArrayList<NewsClass>();
ArrayList<NewsClass> newsData = new DataClass().newsData;
// 신문 종류별로 검색
for(int i=0;i<newsData.size();i++) {
if(newsData.get(i).kind.equals(word)) {
searchList.add(newsData.get(i));
}
}
return searchList;
}
}
<PrintClass>
package com.bjy;
import java.util.ArrayList;
import java.util.Scanner;
public class PrintClass {
static String extension = "";
static String pathURL = "";
public PrintClass() {
}
public void searchPrint(ArrayList<NewsClass> searchList, String searchWord) {
if(searchList.size()<1) {
System.out.printf("%s로 조회된 결과가 없습니다.", searchWord);
}else {
System.out.printf("%s로 조회된 결과는 총 %d건입니다", searchWord, searchList.size());
System.out.println("=======================");
for(NewsClass news : searchList) {
/* 향상된 for문 : for(타입 변수명 : 배열) { 실행문 }
*
*/
System.out.print(news.press + "\t");
System.out.print(news.image + extension + "\t");
System.out.print(pathURL + news.url + "\t");
System.out.print(news.kind + "\n");
}
}
}
}
* 느낌점
문제를 풀면서 큰 흐름은 잘 짰으나 url의 데이터를 가공하고 출력할 때 전처리 전의 url 데이터를 어떻게 넣어야 할 지 몰라서 막혔다. 어차피 모든 배열의 요소의 url은 숫자를 제외한 앞의 내용이 공통적인 내용이기에 출력하는 기능을 하는 PrintClass의 static 변수로 넣어줘서 재사용하였다.
막히는 부분이 있다면 그 변수 혹은 메서드가 어떤 기능을 하는지, 어떤 의미를 가지는지 그리고 어디에서 사용되어야 하는지 생각하면 코드를 더 쉽게 짤 수 있을 것 같다.
'Java' 카테고리의 다른 글
TIL_210323_상속, 오버라이딩 (0) | 2021.03.23 |
---|---|
Bubble Sort : 거품 정렬 (0) | 2021.03.22 |
자바의정석_연산자(Operater) (0) | 2021.03.22 |
자바의정석_변수(Variable) (0) | 2021.03.22 |
TIL_210319_메서드, 배열, File클래스, FileWriter 클래스, Bufferded.. 클래스 (0) | 2021.03.19 |