Hallo,
ich habe 2 Klassen - eine Bibliotheksklasse und eine Buchklasse. In der Bibliothek möchte ich die Bücher "speichern", jedoch scheiterts bei mir da vermutlich an absolut elementaren Dingen.
Hier ist die Buchklasse:
public class Book {
private String title;
private String author;
private String genre;
private int year;
private int isbn;
public Book(String Title, String Author, String Genre, int Year, int Isbn)
{
title=Title;
author=Author;
genre=Genre;
year=Year;
isbn=Isbn;
}
public String toString()
{
String output;
output=title+", "+author+"\n"+year+"\n"+genre+"\n"+isbn;
return output;
}
}
Alles anzeigen
Und hier die Bibliotheksklasse:
public class Library {
private int cap;
private int capInc;
private int realAmount=0;
private Book [] books;
public Library(int initialCapacity, int capacityIncrement)
{
this.cap=initialCapacity;
this.capInc=capacityIncrement;
for(int i=0;i!=cap;i++)
books[i]=new Book("a","a","a",1,1);
System.out.println(books.length);
}
public void insert(Book b)
{
if(realAmount<cap) //there is still some space left
{
//Search for free space
for(int i=0;i!=cap;i++)
{
if(books[i]==null)
{
books[i]=b;
realAmount++;
return;
}
}
System.out.println("Error 0x001");
}
else if(capInc>0) //Try to increase space
{
cap+=capInc;
if(realAmount<cap) //there is still some space left
{
//Search for free space
for(int i=0;i!=cap;i++)
{
if(books[i]==null)
{
books[i]=b;
realAmount++;
return;
}
}
System.out.println("Error 0x002");
}
}
System.out.println("Error 0x003: Couldnt increase size");
}
public void delete(Book b)
{
for(int i=0;i!=cap;i++)
{
if(books[i]==b)
{
books[i]=null;
realAmount--;
return;
}
}
System.out.println("Error 0x002: Objekt nicht gefunden");
}
public void print()
{
for(int i=0;i!=cap;i++)
{
if(books[i]!=null)
{
books[i].toString();
}
}
}
}
Alles anzeigen
Da ich in der Bibliotheksklasse alle Bücher, die dort drin sind verwalten möchte, hatte ich natürlich die Idee diese in einem Array zusammenzufassen. Um dieses Array dann zu initialisieren, möchte ich es im Konstruktor mit Standardwerten füllen - allerdings mault da bereits der Compiler, wenn ich es aktiv ausführe.
Fehlercode:
Die entsprechende Zeile ist:
Dies ist mein Testcode aus einer Testklasse (zum Einfügen komme ich noch nichtmal, die untere Zeile ist der Crashpunkt)
Meine Fragen sind nun:
Wieso ist dort eine NullException, wenn ich dieses Objekt doch gerade erzeugen will?
Wie kann ich das Problem beheben?
Gibt es noch eine andere Möglichkeit um entsprechend "nicht vorhandene" Objekte zu suchen anstatt dem (später folgenden) Abfragen auf Standardwerte?
Danke im Voraus und frohes Neues!
EDIT: Erledigt, books = new Book[cap]; im Konstruktor hat einfach gefehlt.