2015-02-07 3 views
-3

안녕하세요. 책 목록의 페이지 수가 가장 많은 책을 반환하는 BookCollection의 longestBook 메소드를 구현하는 데 도움을 줄 수 있습니까? 나는 BookList Class를 포함하고 있습니다.가장 긴 서적을 반환하는 방법 구현에 도움이 필요함 (굵은 글씨 참조)

지침의 굵게 부분을 참조하십시오.

도와주세요! 여기

가 할당입니다 :

도서 객체는 고유의 ISBN 번호, 작성자 이름, 페이지 수를 지정 길이, 면적이 (지역 등등 CS, 수학, 화학, 바이오 등을 할 수 있습니다). 클래스 북은 책 객체를 설명하고 isbn, author 및 유형 String의 영역과 유형 int의 길이를 각각 가지고 있습니다. 또한 클래스에는 다음 서비스 메서드가 있습니다.

• 책이 600 페이지 이상일 때 true를 반환하는 boolean isLong(). 그렇지 않으면 false를 반환합니다.

• String toString()은 다음에 표시된 형식으로 Book 객체를 한 줄로 표현한 String을 반환합니다.

The book should be displayed as [BOOK ISBN:1001-01-141414, AUTHOR: Lewis, AREA: CS, PAGES: 619] 

필요한 경우 접근 자 메소드 getAuthor(), getArea(), getLength()를 제공 할 수 있습니다. 다음 7 선 "books.txt"라는 입력 파일을 만듭니다

1001-01-171714 루이스 CS 699

1002-01-771424 루이스 (CS)에게 477

1003-01-141434을 존스 MATH 698 개

1004-01-141444 존스 CS 617

1005-01-141454 브라운 CHEM 326 개

1006-01-141464 존스 BIO 127

1007-01-771474 샌더스 CS 998

books.txt 파일의 각 라인은 한 권의 책 개체에 대한 정보를 제공합니다.

BookCollection 클래스에는 bookList 변수가 있습니다. 변수 bookList는 ArrayList 유형이며 모든 책의 모음을 포함합니다. ArrayList의 모든 객체는 Book 유형입니다. ArrayList 클래스는 Java의 일부인 미리 정의 된 클래스이며 책 수를 지정하는 bookList의 요소 수를 반환하는 size() 메서드를 가지고 있습니다. BookCollection 클래스의 생성자는 위에서 지정한 입력 파일의 데이터를 읽음으로써 변수 bookList를 할당하지만 books.txt 파일의 각 행에는 하나의 책에 대한 데이터가 있습니다 목적. 각 행에서 읽은 데이터는 먼저 Book 객체에 할당되어야하며 그런 다음 해당 책을 bookList 컬렉션에 추가해야합니다. 클래스 BookCollection에는 메서드가 있습니다.

• 줄 당 하나의 장부 개체가 지정된 책의 전체 모음에 대한 문자열 표현을 반환하는 String toString().

void displayLongBooks() - 빈 줄 하나를 표시 한 다음 "LONG BOOKS"제목을 표시하고 그 다음에 600 페이지를 초과하는 모든 긴 책을 표시합니다. 한 줄에 하나씩 긴 책을 보여줍니다. isLong() 메서드를 사용해야합니다.

• 주어진 저자가 저술 한 모든 책을 표시하는 void displayBooksFromAuthor (문자열 작성자).

• void displayBooksFromArea (문자열 영역) 주어진 영역의 모든 책을 표시합니다.

• book longestBook()은 bookList에서 가장 많은 페이지 수를 가진 책을 반환합니다.

가장 간단한 코드를 사용하여 각 방법을 구현하십시오. 모든 메소드는 public이어야하며 인스턴스 변수 bookList를 처리하여 구현해야합니다.

Book 및 BookCollection 클래스 외에도 응용 프로그램에는 main 메소드가 포함 된 TestBookCollection 클래스가 있습니다. 이름이 클래스가 응용 프로그램을 테스트하는 데 사용됨을 나타냅니다.

EXTRA CREDIT (1 포인트) 다음 메서드를 Book 클래스에 추가하십시오.
문자열 mathCS() 메서드 mathCS()는 서적 영역이 MATH이면 "MATH"라는 문자열을 반환하고 서적 영역이 "CS"이면 "CS"문자열을 반환하고 다른 모든 영역은 "기타"문자열을 반환합니다.

BookCollection 클래스에 다음 두 가지 메서드를 추가하십시오. • void displayMathCSBooks() void 비어있는 행을 표시하고 "MATH and COMPUTER SCIENCE BOOKS"라는 제목을 표시 한 다음 MATH 또는 CS 영역에 속한 모든 책을 표시합니다 . (한 줄에 한 권씩 표시). • 다른 모든 책을 표시하는 void displayOtherBooks().

다음 단어를 포함하는 한 단어의 문서를 제출하십시오 : 가능한 포인트 세 클래스 각각에 대한 코드. 7 점 프로그램 실행 사진 (1 점)와 (2points) 1 점 UML 디자인 사진을 2 점 추가 신용 1 점 파일 "books.txt"의 지정된 데이터

프로그램 RUN 개요 :

모든 도서 (표시 모든 책)

LONG BOOKS (모든 긴 책 표시)

(저자를 입력하도록 사용자에게 요청합니다. 사용자가 스미스를 입력하면)

스미스 BOOKS (스미스에 의해 작성된 모든 책 표시)

(다른 저자를 입력하도록 사용자에게 요청)

리의 서적 을 (사용자가 주어진 목록에서 저자가하지 않은 리를 입력하면() "리 의해 작성된 어떤 책이 없습니다"표시합니다.)

(지역을 입력하도록 사용자에게 요청) (사용자가 입력하는 경우 CHEM)

화학 서적 (디스플레이 모든 화학 서적 또는 "CHEM 서적이 없다"는 경우.)

최장 BOOK () 가장 긴 책을 표시

EXTRA 신용 수학 및 컴퓨터 과학 서적 (중 MATH 나 CS 영역에서 모든 책)

다른 책을 표시 (남아있는 모든 표시 책) 여기

내 코드는 지금까지 있습니다 :

import java.util.Scanner; 

public class TestBookCollection { 

    public static void main(String[] args) throws Exception { 

    BookCollection testBooks = new BookCollection(); 
    System.out.println(testBooks); 

    testBooks.displayLongBooks(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("\nWhich author would you like to Display?"); 

    String author = input.next(); 
    testBooks.displayBooksFromAuthor(author); 

    System.out.println("\nWhich author would you like to Display?"); 
    String author2 = input.next(); 
    testBooks.displayBooksFromAuthor(author2); 

    System.out.println("\nWhich area would you like to Display?"); 
    String area = input.next(); 
    testBooks.displayBooksFromArea(area); 
    testBooks.displayAverageLength(); 
    testBooks.displayMathCSBooks(); 
    testBooks.displayOtherBooks(); 
    } 

} 
+7

불필요한 코드와 설명을 모두 제거하십시오. 문제 해결을 위해 구현 한 코드와 문제를 정확히 정리하십시오. 우리는 숙제를 도울 수있어서 기쁘지만, 그렇게하기 위해 농구를 뛰어 넘지는 않을 것이며, 우리는 당신을 위해 숙제를하러 온 것이 아닙니다. – MarsAtomic

+0

'Book' 수업은 어디 있습니까? bookLength에 대한 getter가 있습니까? –

+0

지금 Book 클래스가 포함되었습니다. – mattkrieger3

답변

0

public class Book { 
    private String bookIsbn, bookAuthor, bookArea; 
    private int bookLength; 

    public Book(String bookIsbn, String bookAuthor, String bookArea, 
     int bookLength) { 
    this.bookIsbn = bookIsbn; 
    this.bookAuthor = bookAuthor; 
    this.bookArea = bookArea; 
    this.bookLength = bookLength; 

    } 

    public String toString() { 
    return "BOOK ISBN: " + bookIsbn + ", AUTHOR: " + bookAuthor + ", AREA: " 
     + bookArea + ", PAGES: " + bookLength; 
    } 

    public boolean isLong() { 
    if (this.bookLength <= 600) 
     return false; 
    else 
     return true; 
    } 
    public String mathCS(){ 
    String mathCSReturn; 
    if (this.bookArea.equals("MATH")) 
     mathCSReturn = "MATH"; 
    else if (this.bookArea.equals("CS")) 
     mathCSReturn = "CS"; 
    else 
     mathCSReturn = "OTHER"; 
    return mathCSReturn; 

    } 
    public String getIsbn() { 
    return this.bookIsbn; 
    } 

    public String getAuthor() { 
    return this.bookAuthor; 
    } 

    public String getArea() { 
    return this.bookArea; 
    } 

    public int getLength() { 
    return this.bookLength; 
    } 

} 


나는 세부 과제를 검토 너무 게으른했지만, 가장 긴 책을 찾는 것은 어려운 것을 안됩니다. 모든 책을 반복하고 페이지가 가장 많은 책을 추적하십시오. 다음과 같은 내용 :

public Book longestBook(){ 
    int maxIdx = 0; 
    int currMax = 0; 
    for(int i=0; i < bookList.size(); i++){ 
    Book currBook = bookList.get(i); 
    if(currBook.getLength() > currMax){ 
     currMax = currBook.getLength(); 
     maxIdx = i; 
    } 
    } 
    return bookList.get(maxIdx); 
} 
+0

나는 그것을 어디에서 불러야 하느냐? – mattkrieger3

+0

당신은 book (bookList)의 목록을 거기에 보관하기 때문에 BookCollection 클래스에이 메서드를 배치 할 것입니다. 기본 메소드에서 이미 "testBooks"라는 BookCollection의 인스턴스를 만들었으므로 다른 메소드 (예 : testBooks.displayLongBooks();)에서와 마찬가지로 "testBooks.longestBook();"을 작성하십시오. 마침내 toString()을 호출하여 이름, 작성자 등을 가져올 수있는 Book 객체를 반환합니다. – eol

관련 문제