[JAVA] Collection 실습 문제 2. 존재하는 도서가 없습니다.

    목표

     

    책에 대한 정보를 담고 있는 프로그램을 만들려고 한다. 모든 출력문은 BookMenu 클래스에서 작업하고 있다. 

    먼저 Switch문을 통해서 숫자 2를 입력하면, selectList()로 호출하는 구문을 기술했다. selectList()가 호출되면 바로 BookController에 있는 selectList()를 호출하고, 그곳에서 작업된 내용을 다시 BookMenu에 있는 selectList에서 받아 출력하는 구문을 기술하고자 한다. 

     

     

    문제사항 

    bookList()가 Empty가 아님에도 불구하고, 존재하는 도서가 없다고 출력되고 있다.

     

     

     

    접근1)

     

    <BookMenu>

    1. bc.selectList()를 호출하기

    2. BookController에서 보낸 bookList를 담을 ArrayList를 다시 생성한다.

    3-1. 조건문을 이용해서 bookList가 비어있을 경우 / 아닐 경우를 찾고

    3-2. bookList가 비어있지 않을 때 => 반복문을 통해서 bookList에 담긴 값들을 출력한다. 

    public void selectList() {
    		
    
    		bc.selectList();
    		
    		ArrayList <Book> bookList = new ArrayList<>();
    		
    		if(bookList.isEmpty()) {
    			System.out.println("존재하는 도서가 없습니다");
    		}else {
    			
    			for(int i=0; i<bookList.size();i++) {
    				System.out.println(bookList.get(i));
    			}
    			
    			
    		}
    		
    		
    		
    	}

     

    <BookController>

    1. 반복문 + get메서드를 사용해서 bookList에 담긴 값들을 하나하나 읽기

    2. 그 값들을 return문을 사용하여 Bookmenu 클래스로 보내기 

    	public ArrayList<Book> selectList(){
    		
    		for(int i=0; i<bookList.size();i++) {
    				bookList.get(i);	
    			}
    		
    		return bookList ; 	
    		
    		
    	}

     

     

     

     

     

     

     

    접근 2)

    BookMenu의 2. BookController에서 보낸 bookList를 담을 ArrayList를 다시 생성한다. 이 부분에서 조금 이상해서, 다시 생각해봤는데, bookList를 담을 ArryaList를 다시 생성한다면, 그 값은 당연히 비어있을 것이고, 따라서 그 값을 출력을 해도 값이 비어있다는 결론이 나왔다. 

    		bc.selectList();
    		
    		ArrayList <Book> bookList = new ArrayList<>();

    따라서, 다음과 같이 bc.selctList()와 bookList를 따로 기술하는 것이 아닌  bc.selectList()에 담긴 값을 booList가 받아주는 형식으로 코드를 재 기술했다.

    		ArrayList <Book> bookList = bc.selectList();

     

     

     

    <접근 2의 결괏값>

    새로운 도서 추가 후에도 정상적으로 조회가 되는 것을 확인했다.

    728x90

    댓글