[Day24] Library 문제(시험문제랑 비슷)

NA YE SOM·2023년 8월 1일
0

Library(5번째 시험문제와 비슷)

book class


무료책일때는 제목만 전달

this()

this() : 같은 클래스의 다른 생성자를 호출할 때 사용, 생성자 내부에서만 사용할 수 있음, this() 메서드에 인수를 전달하면, 다른 생성자 중에서 메서드가 일치하는 다른 생성자를 찾아서 호출한다.


this는 파라미터가 2개인 생성자


-> 슈퍼클래스 생성자 부르듯이 this( ) 내 생성자 부름
book 생성자 중에서 파라미터 2개인 -> string title, int price를 부름




getter, setter만들기

book 객체 출력을 편안하게 하려고 -> tostring 만드는게 일반적


-> 원래는 따로 객체 만들어서 다른 애인데
같은 책으로 인식시키자

(기억) ★ equals 메소드 override 해주기 : 같은애로 인식시키기 위해서



-> hashCode하고 equals

library class

책 한도끝도 없이 들어감 -> arraylist

책정보 각종 정보들 입력받을것(사용자로부터) -> scanner사용

-> 선언만 하고 그냥 쓰면 nullPointexception 발생


-> 선언과 생성 분리하는 것

  1. 등록 메소드

  2. 삭제 메소드

  3. 조회 메소드

  4. 전체 조회 메소드

  1. 수정 메소드

  2. 운영 메소드
    도서관 관리자가 사용하는 메소드

무한루프 돌동안 사용자로부터 보여줄것


-> 정수니까 nextInt로
123450 이 값을 가지고


-> switch를 끝내시오 . 그래도
무한루프 걸려있어서 계속 함


-> break는 스위치만 끝내는거라 무한루플에 걸려서 안됨

반환없는 메소드는 실행중지를 의미함

main class

-> main은 아무곳에나 두어도 됨

main -> ctrl + space


-> manage만 보이게 수정하기(다른것 안보이게 막기)

-> private으로 수정하기


-> manage만 library꺼고 나머지는 다 object것


-> 무한루프 걸려있어서 terminator 누르면 닫을수 있음


-> 어린왕자라고 쓰면


예외가 발생하는 메소드 nextint() :정수만


-> 애가 던져버려서

next 는 문자열로 받아서 12340도 String으로 받을수 있음
(String이라고 우기면 다 받을 수 있음)

alt + shift + a

실수로 이상한거 입력해도 default로 처리

-> arraylist에 한도끝도 없이 넣을 수 있음


-> sc.를 부르고 공백도 포함(nextLine)
scanner가 필드라서 모든 메소드에서 쓸 수 있음

등록


-> Book을 만들어서 추가함

-> 배열이면 , 인덱스 증가부분, 한계가 있는지 봐야해서 어려웠을

next(), nextInt(), nextLine() - Scanner 클래스

next() : 문자를 입력할때 사용한다. 단, 공백은 입력할 수 없어 띄어쓰기는 불가능하다.
nextInt() : 숫자를 입력할때 사용한다. 마찬가지로 띄어쓰기는 불가능하다.
nextLine() : 문자 + 공백을 입력할 때 사용한다. 띄어쓰기를 입력할 수 있어 유용하지만 다른 메소들들과 같이 사용할때 먼저 상황에서 공백이 남아있다면 입력을 하지 않아도 자동으로 넘어가게 된다.

++(유투브)

-> 주소 입력안했는데 끝나버림
방법) sc.next(); sc.nextLine();AAA(한번 더 사용)

sc.next에서 1만 먹고 엔터는 입력 스트림에 남겨둠
어쨌든 2글자 입력(1,enter)

1은 sc.next()가 먹음
enter은 남아있다가 addBook()의 nextLine이 먹음


-> next는 엔터가 남아있어서 자기 입력으로 보지 않음

(nextline -> next로 바꾸기)

->띄어쓰기로 하면 '어린' 만 읽음(공백 뒤는 못읽음)

throw로 해결하기

책제목은 문자열 입력이라 상관없는데
price는 nextInt()라서 정수가 아니면 오류 발생

-> 발생한 예외를 addBook 호출한곳으로


-> 이름보고 하면됨

-> 호출하는 곳 addBook() 호출하는곳

-> manage

★★ 여기로 inputmismatchexception이 옴 (중요)


-> try-catch를 여기서 한번 묶어주면 됨


-> while문을 try안에 넣을것인가?

try안에다가 while를 넣을경우)

-> 예외발생시) catch로 넘어가고 무한루프는 끝나버림
-> 입력하나 잘못하면) 그냥 동작이 끝나버리는것

-> try catch가 끝나고 while문 밖으로 나가지 못함
-> 예외메시지 출력하고 다시 while문 안으로 들어가서 입력을 받음


자바가 만든 예외 메시지 : null

잘못된입력입니다. 다시 시도하세요 -> 신경쓰지 말고


-> 재시도해서 성공할 수 있음

전체조회

-> arraylist에 저장된 메소드

자바가 책이없다고 예외처리 하지 못함


-> books arraylist임


-> 도서관에 등록된 책이 없다 출력하고 넘어감


-> 예외처리로 동작됨



책한권

TO string override된 형태로 출력될 것


데이터베이스에 들어가는건 아니고, arraylist(메모리)에 저장되기 때문에 프로그램 끄거나 컴퓨터 꺼지면 날아가는 "휘발성" 이다.
-> DB가 필요
-> 이런 프로그램에 DB를 붙이는 수업을 함 (다음주에)
-> 한번 등록한 책은 계속 들어가있음

(자바 + 데이터베이스)


제목을 기준으로 찾아서 수정,삭제, 조회하는 방식(내일)

profile
개발자 velog

0개의 댓글