Ola a todos. Estou tendo um problema em um trabalho (universidade) que gestiona uma biblioteca. Estou quase no final porque a parte de codificação já esta praticamente terminada porem estou tendo um erro ao tentar retornar os valores das copias dos livros.
Para explicar melhor tenho dois objetos: Resource e Copy. Onde Resource seria o livro em si e Copy uma copia. Cada Resource pode ter até 9 cópias. UML pede assim os construtores: Classe Copy:
- Copy(resource:Resource)
- Copy(resource:Resource, location:String) Classe Resource:
- Resource()
- Resource (id:String, title:String, imageSrc:String, price: double, yearPublished:int, genre:Genre, loanable:boolean, location:String)
Metodo
public Double getTotalCost() {
double total = 0;
try {
if (getNumCopies() != 0) {
for (int i = 0; i < copies.length; i++) {
if (copies[i] != null)
total += copies[i].getResource().getPrice();
}
}
} catch (Exception e) {
System.out.println(e);
}
return total;
}
O erro esta aqui
total += copies[i].getResource().getPrice();
Esse e o método toString() :
@Override
public String toString() {
if (isLoanable() == true) {
return "ID: " + getId() + "\n" + "Title: " + getTitle() + "\n" + "Published: " + getYearPublished() + "\n"
+ "Genre: " + getGenre() + "\n" + "Loanable: " + "YES" + "\n" + "Copies: " + getNumCopies() + " ("
+ getTotalCost() + " €)";
} else {
return "ID: " + getId() + "\n" + "Title: " + getTitle() + "\n" + "Published: " + getYearPublished() + "\n"
+ "Genre: " + getGenre() + "\n" + "Loanable: " + "NO" + "\n" + "Copies: " + getNumCopies() + " ("
+ getTotalCost() + " €)";
}
}
Aqui estão os construtores: Classe Resource:
public Resource() throws ResourceException {
this("0000000000", "Dummy", "./", 0.0, 1900, Genre.NONFICTION, true, null);
}
public Resource(String id, String title, String imageSrc, double price, int yearPublished, Genre genre,
boolean exhibited, String location) throws ResourceException {
setId(id);
setTitle(title);
setImageSrc(imageSrc);
setPrice(price);
setYearPublished(yearPublished);
setLoanable(exhibited);
setGenre(genre);
}
Classe Copy:
public Copy(Resource resource) {
setNumber();
setResource(resource);
incNextNumber();
}
public Copy(String location, Resource resource) {
setNumber();
setLocation(location);
setResource(resource);
incNextNumber();
}