2015-11-14 6 views
0

im confused с вопросом, который я получил, что касается программы книжной полки. я должен создать 2 класса под названием книги и BookShelfjava arraylist class program

Я более или менее завершена класс Book, который содержит эти переменные (идентификатор, автора и название) с (получить, установить, ToString и застройщиками методы)

Однако для класса Bookshelf, я вроде невежественны ли то, что я сделал правильно

Вот что я должен делать на книжной полке класса

  • Создать учетную addBook метода, он принимает в книге объекте в качестве входных данных и добавляет объект в книжную полку

  • returnBooks метода, без параметров/аргументы, необходимых только возвращает ArrayList книг, чтобы

  • returnAuthorBooks, принимает в качестве входных данных автора и возвращает ArrayList книг автора

Это код, который я сделал

import java.util.ArrayList; 
import java.util.Collections; 

public class BookShelf { 
    ArrayList<Book> listOfBooks = new ArrayList<Book>(); 

    public void addBook(Book getTitle){ 
     listOfBooks.add(getTitle); 
    } 

    public ArrayList<Book> returnBooks(){ 

     ArrayList myBook = new ArrayList(); 
     Collections.sort(myBook); 
     return myBook; 
    } 

    public ArrayList<Book> returnAuthor(Book author){ 

     for (Book books : listOfBooks){ 
      if (author.getAuthor() == books.getTitle()){ 
       return listOfBooks; 
      } 
     } 
     return null; 
    } 
} 

Хотел бы уточнить, если есть какая-то ошибка здесь, как по какой-то причине я получаю ощущение, что я сделал что-то неправильное

+0

Это не соответствует теме, так как это было бы более подходящим для http://codereview.stackexchange.com/ Однако внимательно ознакомьтесь с 'returnAuthor'. Во-первых, почему вы передаете «Книгу», а не просто String с именем автора, не используйте '==' для проверки равенства строк, и вы возвращаете весь список книг, а не только список книг по этот автор. Возвращение «null» также является плохой привычкой. –

+0

@MarkRotteveel Я не уверен в этом. codereview предназначен для просмотра кода, который работает. Боюсь, что этот код не подходит. – Eran

+0

@Eran Возможно, вы правы, но в отсутствие конкретных конкретных вопросов это больше похоже на запрос на проверку кода; во всяком случае, здесь тоже нет темы. –

ответ

1

Ваш метод returnBooks возвращает пустой список. Вы должны изменить

ArrayList myBook = new ArrayList(); 

в

ArrayList<Book> myBook = new ArrayList(listOfBooks); 

Для того, чтобы вернуть полный отсортированный список.

Ваш метод returnAuthor имеет несколько проблем:

  1. Он должен принимать автор в качестве входных данных (я не знаю, если он должен быть строкой или есть ли класс Автор).
  2. Вы сравниваете авторов книги с == вместо equals (см. Вопрос this).
  3. Вы возвращаете весь список книг, если найдете книгу с автором, которую ищете. Вы должны только возвращать книги этого автора.
+0

@ Turing85 Спасибо за редактирование, но я не думаю, что «книги» были опечаткой (я не являюсь носителем английского языка, и прошло много лет с тех пор, как я закончил изучать английский язык в средней школе, поэтому я могу быть неправильно). Если вы хотите добавить '' s' (я забыл название этого суффикса) до слова, которое уже заканчивается 's' (как книги), вы просто добавляете' ''. Ваше исправление было бы правильным, если бы я хотел сказать, что OP сравнивал авторов одной книги. Я хотел сказать, что OP сравнивал авторов нескольких книг. – Eran

+0

На самом деле, я просто изменил \ "на", вы, вероятно, правы (мой первоначальный намерен был добавить ссылку на вопрос о сравнении строк). – Turing85