Hallo. Es geht um ein kleines Beispielprogramm, welches die Erzeugung von Book und Libraryelementen simuliert. Im Folgenden mein Quelltext:
Hello Library
Java:
publicclassHelloLibrary{// Simulation durch main()publicstaticvoidmain(String[] args){// Erzeugung von 2 Book-ObjektenBook hdr =newBook("Herr der Ringe");Book hp =newBook("Harry Potter");// Erzeugung eines Library-ObjektesLibrary slub =newLibrary();// register Books in Library
slub register(hdr);
slub register(hp);}}
Book ->
Java:
publicclassBook{// Deklaration privater TitelprivateString title;// setzt privaten Titel auf Titel, der der Methode übergeben wirdpublicBook(String title){this.title = title;}}
Library ->
Java:
publicclassLibrary{// deklariert privates Array von Büchern privateBook[] myBooks;// deklariert private Nummerprivateint number;// Methode stellt Bücherarray 10 Plätze zur Verfügung, setzt Number auf 0, macht AusgabepublicLibrary(){
myBooks =newBook[10];
number =0;System.out.println("Hello, I am a small library for at most 10 books.");}// Methode registriert Buch an aktueller Stelle im Array, erhöht Number, macht Ausgabepublicvoidregister(Book book){
myBooks[number]= book;
number +=1;System.out.println("A new book is registered: "+ book);}}
Beim Kompillieren meldet die Konsole Probleme in folgenden Zeilen der HelloLibrary-class:
slub register(hdr);
slub register(hp);
Diese Zeilen sollen eigentlich lediglich die zuvor erzeugten Bücher in der zuvor erzeugten Library registrieren. Ich hab syntaktisch auch schon etwas rumprobiert, aber keine Lösung gefunden. Kann mir jemand auf die Sprünge helfen?
Ach herrje, da hätt ich auch selber drauf kommen können Vielen Dank, jetzt läufts.
Einen kleinen Schönheitsfehler gibt es aber dennoch. Das Programm gibt nach "A new Book is registered:" nicht wie geplant den Titel, sondern den Speicherplatz des Buchs aus. Brauch ich dafür noch eine Extramethode, welche diesen in ein String umwandelt?
Um der kleinen Bibliothek wenigstens etwas Sinnhaftigkeit zu verleihen, hab ich mir ausgedacht eine kleine Ausleihfunktion zu integrieren.
Die Bücher haben also alle einen Status
// macht Titel öffentlichpublicStringgetTitle(){return title;}
Damit kann ich nun in meine Bibliothek eine Ausleih- und eine Suchmethode (weil man das Buch ja erst finden muss) implementieren.
Java:
// deklariert private testnumber für Schleifensucheprivateint testnumber;// Methode sucht ob es Buch mit übergebenen Titel in der Bibliothek gibt und gibt dieses zurückpublicBooksearch(String title){
testnumber=0;while(testnumber<=number){if(myBooks[testnumber].getTitle().equals(title)){return myBooks[testnumber];}else testnumber +=1;}returnnull;}// Methode verleiht Buch mit übergebenen Titelpublicvoidloan(String title){if(search(title)==null)System.out.println("Book is not registered");if(search(title).getState()==false)System.out.println("Book is not available at the moment.");else{System.out.println("Here you are.");search(title).setState(false);}}
Soweit so gut. Funktioniert alles bis auf den Fall, dass kein Buch mit dem gewünschten Titel existiert. Wenn ich versuche ein solches Buch auszuleihen bekomm ich einen "java.lang.nullpointerexception"-Error. Dieser steht laut Google wohl dafür, dass der Skript auf nicht vorhandene Objekte zugreifen will. Das leuchtet mir auch ein, aber trotzdem muss ich diesen Fall doch abdecken können, wenn die search()-Methode eine null zurückgibt?