[자바 무료 강의] 메모장을 만들어보자 3 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의메모장을 만들어보자 3최종수정일 2021-08-30
아이콘약 10분

메모장 만들기의 마지막 강의이고 구현해야 하는 내용이 많은 만큼 가장 긴 강의인데요. 그래도 힘내서 강의를 들으며 생각의 흐름이 어떻게 진행되는지 확인해보고 여러분들도 실제로 메모장을 구현해보도록 해봅시다.

추가 노트

실습도구에 최종 코드가 작성되어 있습니다.
실습도구를 확인해보세요.

해당 코드를 다 이해할 수 있다면, 그때 다음 강의로 넘어가셔도 됩니다.
강의를 많이 듣는다고 프로그래밍을 잘하는 것은 아닙니다.
조급하다고 실력이 빠르게 향상되는 것은 아닙니다.
기초는 튼튼히 그리고 차분히 진행해야 앞으로 더 큰 프로그램을 만들고 응용하고 롱런하는 것에 있어서 큰 어려움이 없습니다.

메모장을 만들 수 없으면 이후에 게시판도 만들 수 없습니다.

도전자 질문
아이콘bng4535(2022-01-01 15:39 작성됨)
private final NoteEntity[] noteEntities; 부분에서  
private final NoteEntity[] noteEntities = new NoteEntity[NOTE_SIZE]; 이런식으로 크기를 할당해주지 않으면 

java: variable noteEntities not initialized in the default constructor 라는 에러가 뜹니다. 

크기를 따로 할당해 주지 않아도 동적으로 처리되는건가요?
아이콘코드라떼(2022-01-01 17:12 작성됨)
안녕하세요. 코드라떼입니다 :)

배열에 크기를 지정해 주지 않으면 컴파일 되지 않습니다.
예) NoteEntity[] noteEntities = new NoteEntity[];
이런 경우는 크기를 지정하지 않았으므로 컴파일 되지 않습니다.

만약에 private final NoteEntity[] noteEntities; 이렇게만 작성하는 경우도 컴파일 되지 않습니다.

final 키워드가 작성된 경우

1) 변수를 선언할 때 초기화
final NoteEntity[] noteEntities = new NoteEntity[10];

또는

2) NotePad 생성자 내에서 초기화
public NotePad() {
    noteEntities = new NoteEntity[10];
}

둘 중 하나의 방식을 선택하여 반드시 초기화 되어야 합니다.

다시 말하면, 프로그램이 실행될 때 논리적으로 final NoteEntity[] noteEntities 변수에 값이 초기화 되어 있어야 합니다.

값이 지정되지 않은 심볼릭 상수는 존재하지 않습니다.

감사합니다.
아이콘bng4535(2022-01-01 15:19 작성됨)
본문과 연관없는 내용이지만, 사이트 이용하는 데 있어 개선하면 좋을 것 같은 점을 말씀드리고 싶어서 문의하기를 해서 글을 쓰려하는데 버튼이 눌리질 않습니다. 확인해주시면 감사하겠습니다.
아이콘코드라떼(2022-01-01 15:43 작성됨)
안녕하세요. 코드라떼입니다 :)

사이트가 정상적으로 로딩 되지 않을 경우 1:1 문의 버튼이 눌리지 않는 문제가 간헐적으로 발생하고 있습니다.
해결 방법은 사이트를 새로고침 하면 되는데 이 부분은 다시 한번 확인해 보겠습니다.

감사합니다.

아이콘루미자미바(2021-12-06 15:51 작성됨)

순서도나 예제를 더 공부해 볼 수 있는 책이나 공부법, 검색어를 알고 싶습니다.
아이콘코드라떼(2021-12-07 17:55 작성됨)
안녕하세요. 코드라떼입니다 :)

자바를 이용하여 순서도에 대한 예제를 통해 공부하는 방법은 심도 깊게 찾아보지는 않았으나 제 선에서는 거의 없었습니다.
구글에서 '순서도 예제'를 검색해보세요.

감사합니다.
아이콘넬준(2021-10-21 10:32 작성됨)
NotePad.java파일에서 printNote() 부분

String headLine = String.format("번호:%d 제목:%s", noteLength, noteEntity.getTitle()); 에서

메모 번호에 noteLength를 출력해도 되나요?

noteLength가 아닌 scanner로 받아온 selectedNumber로 하면 되는지 궁금합니다.
아이콘코드라떼(2021-10-21 11:46 작성됨)
안녕하세요. 코드라떼입니다 :)

코드가 noteLength가 아닌 selectedNumber가 맞으며 noteLength는 메모장에 저장된 메모의 총개수를 나타내기 때문에 잘못 작성된 코드 맞습니다.
확인해 주셔서 감사하고 수정해놓겠습니다.

감사합니다 :)
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
파일
파일파일
Root
파일

메모장의 최종 코드입니다. 1. 클래스 - 객체 2. 클래스 생성자, 멤버 변수, 메서드 3. 패키지 4. 접근 제어 지시자 여태까지 배웠던 모든 개념이 들어가 있습니다. 실습도구에서 코드를 다운로드 받거나 에디터를 통해 코드를 천천히 살펴보고 분석해보세요. 작성된 코드를 보고 흐름을 읽는 것도 실력향상에 도움이 됩니다.

Output
root$
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의메모장을 만들어보자 3최종수정일 2021-08-30
아이콘약 10분

메모장 만들기의 마지막 강의이고 구현해야 하는 내용이 많은 만큼 가장 긴 강의인데요. 그래도 힘내서 강의를 들으며 생각의 흐름이 어떻게 진행되는지 확인해보고 여러분들도 실제로 메모장을 구현해보도록 해봅시다.

추가 노트

실습도구에 최종 코드가 작성되어 있습니다.
실습도구를 확인해보세요.

해당 코드를 다 이해할 수 있다면, 그때 다음 강의로 넘어가셔도 됩니다.
강의를 많이 듣는다고 프로그래밍을 잘하는 것은 아닙니다.
조급하다고 실력이 빠르게 향상되는 것은 아닙니다.
기초는 튼튼히 그리고 차분히 진행해야 앞으로 더 큰 프로그램을 만들고 응용하고 롱런하는 것에 있어서 큰 어려움이 없습니다.

메모장을 만들 수 없으면 이후에 게시판도 만들 수 없습니다.

도전자 질문
아이콘bng4535(2022-01-01 15:39 작성됨)
private final NoteEntity[] noteEntities; 부분에서  
private final NoteEntity[] noteEntities = new NoteEntity[NOTE_SIZE]; 이런식으로 크기를 할당해주지 않으면 

java: variable noteEntities not initialized in the default constructor 라는 에러가 뜹니다. 

크기를 따로 할당해 주지 않아도 동적으로 처리되는건가요?
아이콘코드라떼(2022-01-01 17:12 작성됨)
안녕하세요. 코드라떼입니다 :)

배열에 크기를 지정해 주지 않으면 컴파일 되지 않습니다.
예) NoteEntity[] noteEntities = new NoteEntity[];
이런 경우는 크기를 지정하지 않았으므로 컴파일 되지 않습니다.

만약에 private final NoteEntity[] noteEntities; 이렇게만 작성하는 경우도 컴파일 되지 않습니다.

final 키워드가 작성된 경우

1) 변수를 선언할 때 초기화
final NoteEntity[] noteEntities = new NoteEntity[10];

또는

2) NotePad 생성자 내에서 초기화
public NotePad() {
    noteEntities = new NoteEntity[10];
}

둘 중 하나의 방식을 선택하여 반드시 초기화 되어야 합니다.

다시 말하면, 프로그램이 실행될 때 논리적으로 final NoteEntity[] noteEntities 변수에 값이 초기화 되어 있어야 합니다.

값이 지정되지 않은 심볼릭 상수는 존재하지 않습니다.

감사합니다.
아이콘bng4535(2022-01-01 15:19 작성됨)
본문과 연관없는 내용이지만, 사이트 이용하는 데 있어 개선하면 좋을 것 같은 점을 말씀드리고 싶어서 문의하기를 해서 글을 쓰려하는데 버튼이 눌리질 않습니다. 확인해주시면 감사하겠습니다.
아이콘코드라떼(2022-01-01 15:43 작성됨)
안녕하세요. 코드라떼입니다 :)

사이트가 정상적으로 로딩 되지 않을 경우 1:1 문의 버튼이 눌리지 않는 문제가 간헐적으로 발생하고 있습니다.
해결 방법은 사이트를 새로고침 하면 되는데 이 부분은 다시 한번 확인해 보겠습니다.

감사합니다.

아이콘루미자미바(2021-12-06 15:51 작성됨)

순서도나 예제를 더 공부해 볼 수 있는 책이나 공부법, 검색어를 알고 싶습니다.
아이콘코드라떼(2021-12-07 17:55 작성됨)
안녕하세요. 코드라떼입니다 :)

자바를 이용하여 순서도에 대한 예제를 통해 공부하는 방법은 심도 깊게 찾아보지는 않았으나 제 선에서는 거의 없었습니다.
구글에서 '순서도 예제'를 검색해보세요.

감사합니다.
아이콘넬준(2021-10-21 10:32 작성됨)
NotePad.java파일에서 printNote() 부분

String headLine = String.format("번호:%d 제목:%s", noteLength, noteEntity.getTitle()); 에서

메모 번호에 noteLength를 출력해도 되나요?

noteLength가 아닌 scanner로 받아온 selectedNumber로 하면 되는지 궁금합니다.
아이콘코드라떼(2021-10-21 11:46 작성됨)
안녕하세요. 코드라떼입니다 :)

코드가 noteLength가 아닌 selectedNumber가 맞으며 noteLength는 메모장에 저장된 메모의 총개수를 나타내기 때문에 잘못 작성된 코드 맞습니다.
확인해 주셔서 감사하고 수정해놓겠습니다.

감사합니다 :)
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)
파일
파일파일
Root
파일

메모장의 최종 코드입니다. 1. 클래스 - 객체 2. 클래스 생성자, 멤버 변수, 메서드 3. 패키지 4. 접근 제어 지시자 여태까지 배웠던 모든 개념이 들어가 있습니다. 실습도구에서 코드를 다운로드 받거나 에디터를 통해 코드를 천천히 살펴보고 분석해보세요. 작성된 코드를 보고 흐름을 읽는 것도 실력향상에 도움이 됩니다.

Output
root$