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

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

추가 노트

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

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

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

도전자 질문
아이콘sudalcoding(2024-01-22 02:04 작성됨)
안녕하세요:) 6:45 영상의
String headLine = String.format("번호:%d 제목:%s", notelength, noteEntity.getTitle());

이 부분이 코드라떼 에디터에는 아래와 같이 잘 반영되어있으나, 영상에는 위의 코드로 값이 잘못 전달 되어 있습니다!

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

아이콘ramu311(2022-08-30 16:04 작성됨)
으르르릉 님 저도 비슷한 문제를 겪었는데 혹시 이전 코드에 scanner.nextInt()를 사용하셨나요?
nextInt()는 개행문자(엔터)전까지의 숫자만 입력받고 개행문자를 제거하지 않아서 nextInt() 사용 후 nextLine() 코드를 사용하면 이전에 제거되지 않은 개행문자가 여기에 입력되면서 자동으로 넘어가게 된다고 하네요.

삭제 부분에 nextLine()을 하나 더 입력했을 때 정상 작동하는 건 아마 위 이유 때문이 아닐까 합니다.

이 경우 scanner.nextInt() 대신 Integer.parseInt(scanner.nextLine())을 사용하면 해결됩니다.
아이콘으르르릉(2022-08-15 14:39 작성됨)
강의를 수강 후 메모장 프로그램을 만드는 상황입니다
삭제하는 메소드를 만들어 구현을 했는데 
구현 후 다시 값을 입력으로 넘어가게되면 

System.out.println("제목을 입력해주세요 : ");
		String title = sc.nextLine();
	
		
		System.out.print("내용을 입력해주세요 : ");
		String content = sc.nextLine();

이 부분에서 제목을 입력해주세요 : String title 부분을 무시하고 바로 내용으로 넘어가게됩니다.
삭제없이 바로 값을 입력할땐 정상으로 입력이 되는데 삭제 후 입력을 하게 되면 저렇게 씹히네요...

혹시 몰라 삭제 부분에 nextLine을 하나 더 넣으니 정상적으로 작동은 합니다...

이렇게 입력값을 받는게 무시되는 이유가 있나요...
아이콘이잉여(2022-07-31 20:49 작성됨)
추가로 질문드립니다.
NoteService 클래스에서 

private final NotePad notePad;
public NoteService() {
  this.notePad = new NotePad(); 
}

상기의 부분이 무엇을 의미하는지 모르겠습니다. 상세하게 설명해주시면 정말감사하겠습니다.
아이콘코드라떼(2022-08-04 05:10 작성됨)
안녕하세요. 코드라떼입니다 :)

private final NotePad notePad; 
의미 : notePad 인스턴스 변수가 선언된 클래스 내에서만 변수에 접근할 수 있는 'private' 접근 제어자가 선언되어 있고, 해당 변수에 인스턴스의 참조 값이 결정되면 변경할 수 없도록 'final' 키워드가 선언되어 있습니다.

public NoteService() {
  this.notePad = new NotePad(); 
}
의미 : NoteService 클래스의 생성자이며, NoteService 인스턴스를 생성할 때 호출됩니다. 그리고 구현부에는 notePad 변수에 NotePad 인스턴스를 생성 후 참조 값을 저장한다는 의미입니다.

추가로 말씀드리고 싶은 건 앞의 강의를 건너띄면 뒤의 내용이 이해가 안 될겁니다.
수학과 비슷합니다. 덧셈을 배우지 않은 상태에서 곱셈을 이해할 수 없듯이 앞의 내용이 자기 것으로 만들어지지 않으면 뒤의 내용을 이해하기 쉽지 않습니다.

감사합니다 :)
아이콘이잉여(2022-07-31 19:33 작성됨)
안녕하세요 코드라떼님 좋은 강의 잘 듣고있습니다. 늘 감사합니ㅏㄷ.
궁금한 점이 있는데요.

private final NoteEntity[] noteEntities;

이 코드가 무엇을 의미하는지 전혀 모르겠습니다.

그리고

public NotePad() {
  this.noteEntities = new NoteEntity[NOTE_SIZE];
}

이 부분도 무엇을 의미하는지, 어디에 사용되는건지 전혀 모르겠습니다.
도움을 요청드립니다. 감사합니다.
아이콘코드라떼(2022-08-04 05:16 작성됨)
안녕하세요. 코드라떼입니다 :)

private final NoteEntity[] noteEntities;
의미 : NoteEntity 인스턴스의 참조값을 여러 개 저장할 수 있는 배열 인스턴스의 참조 값을 저장하는 noteEntities 변수를 선언했습니다.
인스턴스 변수가 선언된 클래스 내에서만 변수에 접근할 수 있는 'private' 접근 제어자가 선언되어 있고, 해당 변수에 배열 인스턴스의 참조 값이 결정되면 변경할 수 없도록 'final' 키워드가 선언되어 있습니다.

public NotePad() {
  this.noteEntities = new NoteEntity[NOTE_SIZE];
}
의미 : NotePad 클래스의 생성자이며, Note 인스턴스를 생성할 때 호출됩니다. 그리고 구현부에는 noteEntities 변수에 NoteEntity 배열 인스턴스를 생성 후 참조 값을 저장한다는 의미입니다.

추가로 말씀드리고 싶은 건 앞의 강의를 건너띄면 뒤의 내용이 이해가 안 될겁니다.
수학과 비슷합니다. 덧셈을 배우지 않은 상태에서 곱셈을 이해할 수 없듯이 앞의 내용이 자기 것으로 만들어지지 않으면 뒤의 내용을 이해하기 쉽지 않습니다.

감사합니다 :)
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : 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분

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

추가 노트

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

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

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

도전자 질문
아이콘sudalcoding(2024-01-22 02:04 작성됨)
안녕하세요:) 6:45 영상의
String headLine = String.format("번호:%d 제목:%s", notelength, noteEntity.getTitle());

이 부분이 코드라떼 에디터에는 아래와 같이 잘 반영되어있으나, 영상에는 위의 코드로 값이 잘못 전달 되어 있습니다!

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

아이콘ramu311(2022-08-30 16:04 작성됨)
으르르릉 님 저도 비슷한 문제를 겪었는데 혹시 이전 코드에 scanner.nextInt()를 사용하셨나요?
nextInt()는 개행문자(엔터)전까지의 숫자만 입력받고 개행문자를 제거하지 않아서 nextInt() 사용 후 nextLine() 코드를 사용하면 이전에 제거되지 않은 개행문자가 여기에 입력되면서 자동으로 넘어가게 된다고 하네요.

삭제 부분에 nextLine()을 하나 더 입력했을 때 정상 작동하는 건 아마 위 이유 때문이 아닐까 합니다.

이 경우 scanner.nextInt() 대신 Integer.parseInt(scanner.nextLine())을 사용하면 해결됩니다.
아이콘으르르릉(2022-08-15 14:39 작성됨)
강의를 수강 후 메모장 프로그램을 만드는 상황입니다
삭제하는 메소드를 만들어 구현을 했는데 
구현 후 다시 값을 입력으로 넘어가게되면 

System.out.println("제목을 입력해주세요 : ");
		String title = sc.nextLine();
	
		
		System.out.print("내용을 입력해주세요 : ");
		String content = sc.nextLine();

이 부분에서 제목을 입력해주세요 : String title 부분을 무시하고 바로 내용으로 넘어가게됩니다.
삭제없이 바로 값을 입력할땐 정상으로 입력이 되는데 삭제 후 입력을 하게 되면 저렇게 씹히네요...

혹시 몰라 삭제 부분에 nextLine을 하나 더 넣으니 정상적으로 작동은 합니다...

이렇게 입력값을 받는게 무시되는 이유가 있나요...
아이콘이잉여(2022-07-31 20:49 작성됨)
추가로 질문드립니다.
NoteService 클래스에서 

private final NotePad notePad;
public NoteService() {
  this.notePad = new NotePad(); 
}

상기의 부분이 무엇을 의미하는지 모르겠습니다. 상세하게 설명해주시면 정말감사하겠습니다.
아이콘코드라떼(2022-08-04 05:10 작성됨)
안녕하세요. 코드라떼입니다 :)

private final NotePad notePad; 
의미 : notePad 인스턴스 변수가 선언된 클래스 내에서만 변수에 접근할 수 있는 'private' 접근 제어자가 선언되어 있고, 해당 변수에 인스턴스의 참조 값이 결정되면 변경할 수 없도록 'final' 키워드가 선언되어 있습니다.

public NoteService() {
  this.notePad = new NotePad(); 
}
의미 : NoteService 클래스의 생성자이며, NoteService 인스턴스를 생성할 때 호출됩니다. 그리고 구현부에는 notePad 변수에 NotePad 인스턴스를 생성 후 참조 값을 저장한다는 의미입니다.

추가로 말씀드리고 싶은 건 앞의 강의를 건너띄면 뒤의 내용이 이해가 안 될겁니다.
수학과 비슷합니다. 덧셈을 배우지 않은 상태에서 곱셈을 이해할 수 없듯이 앞의 내용이 자기 것으로 만들어지지 않으면 뒤의 내용을 이해하기 쉽지 않습니다.

감사합니다 :)
아이콘이잉여(2022-07-31 19:33 작성됨)
안녕하세요 코드라떼님 좋은 강의 잘 듣고있습니다. 늘 감사합니ㅏㄷ.
궁금한 점이 있는데요.

private final NoteEntity[] noteEntities;

이 코드가 무엇을 의미하는지 전혀 모르겠습니다.

그리고

public NotePad() {
  this.noteEntities = new NoteEntity[NOTE_SIZE];
}

이 부분도 무엇을 의미하는지, 어디에 사용되는건지 전혀 모르겠습니다.
도움을 요청드립니다. 감사합니다.
아이콘코드라떼(2022-08-04 05:16 작성됨)
안녕하세요. 코드라떼입니다 :)

private final NoteEntity[] noteEntities;
의미 : NoteEntity 인스턴스의 참조값을 여러 개 저장할 수 있는 배열 인스턴스의 참조 값을 저장하는 noteEntities 변수를 선언했습니다.
인스턴스 변수가 선언된 클래스 내에서만 변수에 접근할 수 있는 'private' 접근 제어자가 선언되어 있고, 해당 변수에 배열 인스턴스의 참조 값이 결정되면 변경할 수 없도록 'final' 키워드가 선언되어 있습니다.

public NotePad() {
  this.noteEntities = new NoteEntity[NOTE_SIZE];
}
의미 : NotePad 클래스의 생성자이며, Note 인스턴스를 생성할 때 호출됩니다. 그리고 구현부에는 noteEntities 변수에 NoteEntity 배열 인스턴스를 생성 후 참조 값을 저장한다는 의미입니다.

추가로 말씀드리고 싶은 건 앞의 강의를 건너띄면 뒤의 내용이 이해가 안 될겁니다.
수학과 비슷합니다. 덧셈을 배우지 않은 상태에서 곱셈을 이해할 수 없듯이 앞의 내용이 자기 것으로 만들어지지 않으면 뒤의 내용을 이해하기 쉽지 않습니다.

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

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

Output
root$