Logiciel de librairie en java: classes de base-besoin d'aide pour APCS [fermé]


J'ai un problème avec le programme que j'essaie de créer. Lorsque j'implémente une arraylist, cela me donne différentes erreurs. Je suis très confus en ce moment sur la façon d'initialiser mon ArrayList de type book.

Voici la classe de livre:

public class Book {

    private double myPrice;
    private String myTitle;
    private String bookAuthor;
    private String isbn;
    private int myCopies;   

    public Book(double price, int copies, String bookTitle, String Author, String isbnNumber) {
        myPrice = price;
        myCopies = copies;
        myTitle = bookTitle;
        bookAuthor = Author;
        isbn = isbnNumber;
    }

    public double getPrice() {
        return myPrice;
    }

    public String getIsbn() {
        return isbn;
    }

    public String getTitle() {
        return myTitle;
    }

    public String getAuthor() {
        return bookAuthor;
    }

    public int copiesLeft(){
        return myCopies;
    }

    public String toString() {
        return "Title: " + getTitle() + "\nAuthor: " + getAuthor()
               + "\nNumber of Available Books: " + copiesLeft() 
               + "\nPrice: $" + getPrice(); 
    }

}

Et voici la classe d'inventaire:

import java.util.ArrayList;

public class Inventory extends Book {
    private ArrayList<Book> allBooks = new ArrayList<Book>;
    private String customerName;

    public Inventory() {
        super();
    }

    //@param double price, int copies, String bookTitle, String Author, String isbnNumber
    public void addBooks() {
        allBooks.add(new Book(4.99, 6, "A Tale of Two Cities", "Charles Dickens", "9781783220731"));
    }

    public boolean isAvailable() {
        for(Book myBook : allBooks) {
            if(myBook.copiesLeft() == 0)
                return false;
            else
                return true;    
        }
    }

    public Book getBookByTitle(String titleSearch) {
        for (Book myBook : allBooks) {
            if (titleSearch.equals(myBook.getTitle()));
                return myBook;
        }
    }
}
Author: Einar, 2014-05-20

1 answers

Je ne sais pas quelles erreurs vous avez eues, et c'est donc un peu difficile de vous aider. Mais voici quelques-unes des erreurs dans votre code. Ils sont marqués avec //

import java.util.ArrayList;

public class Inventory extends Book {
    private ArrayList<Book> allBooks = new ArrayList<Book>; //<---- Should be new ArrayList<Book>(); that is, with parentheses.
    private String customerName;

    public Inventory() {
        super(); //<---- I'm rusty on inheritance, but this line** might fuck up some stuff
    }

    //@param double price, int copies, String bookTitle, String Author, String isbnNumber
    public void addBooks() {
        allBooks.add(new Book(4.99, 6, "A Tale of Two Cities", "Charles Dickens", "9781783220731"));
    }

    public boolean isAvailable() {
        for(Book myBook : allBooks) {
            if(myBook.copiesLeft() == 0)
                return false;
            else
                return true;    
        }
            //<---- You need a second return statement, in case the for-loop and if statement is never accessed. The method always needs to return something when you've told it to.
    }

    public Book getBookByTitle(String titleSearch) {
        for (Book myBook : allBooks) {
            if (titleSearch.equals(myBook.getTitle())); //<---- Semicolon
                return myBook;
        }
            //<---- You need a second return statement, in case the for-loop and if statement is never accessed. The method always needs to return something when you've told it to.
    }
}

Il serait plus facile d'aider si vous pouviez publier la méthode principale et les erreurs spécifiques que vous obtenez.

Aussi, comme l'a souligné Elliott; Je ne sais pas pourquoi vous avez étendu l'inventaire des classes avec Book.

** Je pourrais me tromper ici; Lors de l'appel de super(), qui dans ce cas est constructeur dans Books(?), y peut générer des erreurs car vous manquez de paramètres. Cet appel de méthode ne devrait probablement pas être dans cette classe, car Inventory ne devrait probablement pas étendre Book.

 1
Author: Einar, 2014-05-20 01:00:55