Mein erstes Java Programm

Mahlzeit123

Mitglied
Hallo. Es geht um ein kleines Beispielprogramm, welches die Erzeugung von Book und Libraryelementen simuliert. Im Folgenden mein Quelltext:


  1. Hello Library
    Java:
    public class HelloLibrary {
    
      // Simulation durch main()
      public static void main(String[] args) {
      
       // Erzeugung von 2 Book-Objekten
      Book hdr = new Book("Herr der Ringe");
      Book hp = new Book("Harry Potter");
      
       // Erzeugung eines Library-Objektes
      Library slub = new Library();
      
       // register Books in Library
       slub register(hdr);
       slub register(hp);
        
    
       }
    
    }
  2. Book ->
    Java:
    public class Book {
    
      // Deklaration privater Titel
      private String title;
    
      // setzt privaten Titel auf Titel, der der Methode übergeben wird
      public Book(String title) {
        this.title = title;
      }
    
     
      
      }
  3. Library ->
    Java:
    public class Library {
     
         // deklariert privates Array von Büchern 
        private Book [] myBooks;
        
         // deklariert private Nummer
        private int number;
        
         // Methode stellt Bücherarray 10 Plätze zur Verfügung, setzt Number auf 0, macht Ausgabe
        public Library() {
            myBooks = new Book[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 Ausgabe
        public void register(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? 🙂

MfG
 
Jap, der Methodenaufruf wird in Java immer mit einem Punkt davor ausgeführt, bzw nicht nur der Methodenaufruf sondern alle Aufrufe in einer Klasse.

ps: Normalerweise sieht das erste Programm immerso aus:
Java:
System.out.println("Hello world !");

mfg Major
 
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?

MfG
 
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
Java:
  // Deklaration privater Ausleihstatus
  private boolean state;
+ Methoden zum "Getten und Setten" dieses Statusses
Java:
  // macht Ausleihstatus öffentlich
  public boolean getState() {
  return state;
}  

  // verändert Ausleihstatus
  public void setState(boolean state) {
  this.state=state;
  }
und eine GetTitle Methode
Java:
  // macht Titel öffentlich
  public String getTitle() {
    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 Schleifensuche
    private int testnumber;
// Methode sucht ob es Buch mit übergebenen Titel in der Bibliothek gibt und gibt dieses zurück
     public Book search(String title){
     testnumber=0;
     while(testnumber<=number){
     if(myBooks[testnumber].getTitle().equals(title)) {
     return myBooks[testnumber];
     }
     else testnumber += 1;
     }      
     return null;
     }
     
     // Methode verleiht Buch mit übergebenen Titel
     public void loan(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?
 
Zuletzt bearbeitet:

Zurück
Oben