2015-01-14 7 views
-1

스택 오버플로와 비슷한 질문이 있지만 솔루션을 찾을 수 없습니다. 나는 도서관을위한 간단한 시스템 정보 프로토 타입을 만들고있다.
내 프로그램에 검색 기능을 만들려면 어떻게해야합니까? Library 클래스의 메서드는 지정된 제목, 게시자 또는 연도와 일치하는 책 목록을 반환합니다. 또한, 방법 (들) arraylist를 반환해야합니다. 여기까지 내가 지금까지 가지고있는 것이있다.시스템 정보 프로토 타입에서 검색 기능 만들기

public class Book { 

private String title; 
private String publisher; 
private int year; 

public Book(String title, String publisher, int year) { 
    this.title = title; 
    this.publisher = publisher; 
    this.year = year; 
} 

public String title() { 
    return this.title; 
} 

public String publisher() { 
    return this.publisher; 
} 

public int year() { 
    return this.year; 
} 

public String toString() { 
    return this.title + ", " + this.publisher + ", " + this.year; 
} 

} 

import java.util.ArrayList; 

public class Library { 

private ArrayList<Book> list; 

public Library() { 
    this.list = new ArrayList<Book>(); 

} 

public void addBook(Book newBook) { 

    list.add(newBook); 

} 

public void printBooks() { 
    for (Book boo : this.list) { 
     System.out.println(boo); 
    } 
} 

public ArrayList<Book> searchByTitle(String title) { 
    ArrayList<Book> found = new ArrayList<Book> 

    for (Book title : found) { 
     if (title.contains(title.title())) { 
      return title; 
     } 
    } 
    return found; 

} 

public ArrayList<Book> searchByPublisher(String publisher) { 
    ArrayList<Book> found = new ArrayList<Book> 

    //similar code to the other ArrayList method 

    return found; 

} 

public ArrayList<Book> searchByYear(String year) { 
    ArrayList<Book> found = new ArrayList<Book> 

    //similar code to the other ArrayList method 

    return found; 

} 

} 

public class Main { 
public static void main(String[] args) { 
    Library Library = new Library(); 

Library.addBook(new Book("Cheese Problems Solved", "Woodhead Publishing", 2007)); 
Library.addBook(new Book("The Stinky Cheese Man and Other Fairly Stupid Tales",  "Penguin Group", 1992)); 
Library.addBook(new Book("NHL Hockey", "Stanley Kupp", 1952)); 
Library.addBook(new Book("Battle Axes", "Tom A. Hawk", 1851)); 

ArrayList<Book> result = Library.searchByTitle("Cheese"); 
for (Book Book: result) { 
System.out.println(Book); 
} 

System.out.println("---"); 
for (Book Book: Library.searchByPublisher("Penguin Group ")) { 
System.out.println(Book); 
} 

System.out.println("---"); 
for (Book Book: Library.searchByYear(1851)) { 
System.out.println(Book); 
} 
    } 
} 

답변

2

올바른 방향입니다. 찾은 책을 결과 목록에 추가하십시오.

public ArrayList<Book> searchByTitle(String title) { 
    ArrayList<Book> found = new ArrayList<Book>(); 

    for (Book book : found) { 
     if (book.title().contains(title)) { 
      found.add(book); 
     } 
    } 
    return found; 
} 

또한 코드 평정에서 약간의 오류가있는 부분을 수정했습니다. 당신의 다른 코드는 다른 실수로 가득 찬 것처럼 보입니다. Java 구문에 대해 좀 더 배우고 싶을 수도 있습니다.

편집

MrWiggles가 지적 당신이 대소 문자를 구분 검색을 할 수 있습니다. 이에 대해서는 How to check if a String contains another String in a case insensitive manner in Java?을 참조하십시오.

+1

적어도이 검색은 대소 문자를 구분하지 않습니다. – tddmonkey

+0

감사합니다. 나는 다른 구문 오류를 수정했다. –

+0

MrWiggles 그게 내 다음 단계가 될거야. 대소 문자를 구분하지 않는 가장 쉬운 방법은? –

관련 문제