# Mediathek - bei Filmrückgabe wird immer derselbe Kunde angezeigt



## alta-schwede (2. Jan 2014)

Hallo zusammen,

Aufgabe war es, eine Mediathek zu coden, reiner Code mit Ablauf, ohne Möglichkeit der Nutzereingabe über Konsolenbefehle.

Gibt der Kunde einen Film zurück, soll eine Rechnung ausgegeben werden, auf die der Kunde ab Tag 4 Rabatt erhält...habe auch alles soweit hinbekommen.

Mein einziges Problem : Ich rufe aus der main-Klasse die "verleihen" Methode aus der "Film" Klasse auf, mit den Übergabeparametern Leihdauer(int) und Kunde(Objekt der Klasse Kunden).

Leider bekomme ich beim Aufruf der Filmrückgabe-Methode aus der Klasse Film zwar die korrekte Rechnung angezeigt, jedoch immer denselben Kunden. Was mache ich falsch? Was muss ich ändern?

Vielen lieben Dank im Voraus und viele Grüße


```
public class main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
      
        
   Kunden[] Kunde = new Kunden[5];
   Kunde[0] = new Kunden();
   Kunde[0].neuerKunde(1234, "Max Mustermann", "Musterstrasse 4");
   Kunde[0].kundenInfo();
   Kunde[1] = new Kunden();
   Kunde[1].neuerKunde(5678, "Daniel Düsentrieb", " Road to Entenhausen 56");
   Kunde[1].kundenInfo();
   Kunde[2] = new Kunden();
   Kunde[2].neuerKunde(9876, "Berthold Bogen", "Kreuzweg 137");
   Kunde[2].kundenInfo();
   Kunde[3] = new Kunden();
   Kunde[3].neuerKunde(1234, "Hans Sarpei", "Donnergasse 73");
   Kunde[3].kundenInfo();
   Kunde[4] = new Kunden();
   Kunde[4].neuerKunde(1234, "Edith Elisa Eichendorff", "Kreuzung an der Ecke 8b");
   Kunde[4].kundenInfo();
   System.out.println("___________________________________________________________________________________");
   System.out.println("Filmkatalog");
        
    Film[] Filme = new Film[10]; /* erzeugt 10 Objektreferenzen für die Filme*/
    System.out.println(Filme.length);
  
    Filme[0] = new Film(); /*neues Film-Objekt wird in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[0].neuerFilm(0,1, 1.00, "Mr. Bean", "BEAN", true); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[1] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[1].neuerFilm(1,0, 1.00, "Scream", "SCRM", false); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[2] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[2].neuerFilm(2,1, 1.00, "Der Patriot", "PTRT",false); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[3] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[3].neuerFilm(3,0, 1.00, "Sin City", "SCTY", true); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[4] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[4].neuerFilm(4,1, 1.00, "Hangover", "HANG", false); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[5] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[5].neuerFilm(5,1, 2.00, "Der Hobbit", "HOBB", true); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[6] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[6].neuerFilm(6,1, 2.00, "Die Monster Uni", "MUNI", false); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[7] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[7].neuerFilm(7,0, 2.00, "Die Tribute von Panem", "PANM", false); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[8] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[8].neuerFilm(8,0, 2.00, "Der Pate", "PATE", true); /* neuer Film wird mit Informationen befüllt*/
    
    Filme[9] = new Film(); /*neues Film-Objekt wird  in der Mediathek erzeugt und der Objektreferenz zugewiesen*/
    Filme[9].neuerFilm(9,1, 2.00, "Pacific Rim", "PRIM", false); /* neuer Film wird mit Informationen befüllt*/
    
     for (int zaehler = 0; zaehler < Filme.length; zaehler++)
    {
        Filme[zaehler].anfragen();
    }
      
    System.out.println("___________________________________________________________________________________");
    System.out.println("Ausleihprozess");
    System.out.println("");
    Filme[1].verleihen(Kunde[0], 3);
    Filme[9].verleihen(Kunde[0],2);
    Filme[4].verleihen(Kunde[0],5);
    Filme[0].verleihen(Kunde[0],10);
    System.out.println("___________________________________________________________________________________");
    System.out.println("Downloadprozess");
    System.out.println("");
    Filme[7].verleihen(Kunde[0],2);
    Filme[7].download(2);
    Filme[8].verleihen(Kunde[0],5);
    Filme[8].download(5);
    System.out.println("___________________________________________________________________________________");
    System.out.println("Rückgabeprozess");
    System.out.println("");
    Filme[4].rueckgabe();
    Filme[9].rueckgabe();
    Filme[0].rueckgabe();
    Filme[8].rueckgabe();
```


```
public class Kunden {
    
    int kundennr;
    int materialGeliehen = 0;
    int materialVorbestellt = 0;
    String name, adress;
    
    void neuerKunde(int kundennrP, String nameP, String adressP)  
    {
    
 kundennr = kundennrP;
 name = nameP;
 adress = adressP;
    }
   void kundenInfo() {
       System.out.println(" Kundennummer: " + kundennr);
       System.out.println(" Name: " + name);
       System.out.println(" Adresse: " + adress);
       System.out.println(" geliehenes Material: " + materialGeliehen);
       System.out.println(" vorbestelltes Material: " + materialVorbestellt);
       
       
   }
}
```


```
public class Film extends Leihmaterial
{
  boolean downloadMoeglich;
  boolean istAnzahlNull; //Attribut download_moeglich wird nicht vererbt, nur in Klasse Film vorhanden
  Kunden ausleiher;
  
 // public Film (Kunden ausleiher)
  //{
  //this.ausleiher = ausleiher;    
      
  //}
  
 /* void setzeAusleiher (Kunden kunde)
  {
      ausleiher = kunde;
  }
  */
  void neuerFilm (int kennungP, int anzahlP, double leihgebuehrP, String bezeichnungP, String kurzbezeichnungP, boolean downloadMoeglichP) 
  {
     kennung = kennungP;
     anzahl = anzahlP;
     leihgebuehr = leihgebuehrP;
     bezeichnung = bezeichnungP;
     kurzbezeichnung = kurzbezeichnungP;
     downloadMoeglich = downloadMoeglichP;
    
  } // Die Methode neuerFilm fügt der Mediathek einen neuen Film hinzu
  void anfragen()
  {
       boolean istAnzahlNull = (anzahl == 0 ); /* Download nur möglich, wenn Anzahl verfügbarer Filme 0 ist*/
      
      System.out.println(); 
      System.out.println("Kennung : " + kennung );
      System.out.println("Filmname : " + kurzbezeichnung + "..." + bezeichnung );
      System.out.print("Leihgebuehr : " ); System.out.printf("%.2f", leihgebuehr);System.out.println(" €");
      System.out.println("Anzahl verfuegbar : " + anzahl);
      System.out.println("verliehen fuer : " + tageVerliehen + " Tage");
      if (((istAnzahlNull) && (downloadMoeglich)))
      {
          
      System.out.println("Download ist derzeit möglich");
      } 
      else 
      {
          System.out.println("Download ist derzeit nicht möglich");
      }
      
      if (anzahl == 0) 
       {
          
           System.out.println("Derzeit ist leider kein Exemplar von '"  + bezeichnung + "' verfügbar.");
       }
       else
         {
           
           System.out.println("Der Film '" + bezeichnung + "' ist verfügbar. Sie können ihn ausleihen.");
           System.out.println("");
         }
      
      
  }
  
  void verleihen (Kunden ausleiher, int tageVerliehenP)
  {
    this.ausleiher = ausleiher;
    System.out.println(ausleiher.kundennr); 
   
      if (anzahl > 0)
    {
   
    this.tageVerliehen = tageVerliehenP;
    this.anzahl = anzahl - 1 ;
    System.out.println("Sie haben '" + bezeichnung + "' erfolgreich fuer " + tageVerliehen + " Tage ausgeliehen");
    System.out.println("Es sind jetzt noch " + anzahl + " Exemplare verfügbar.");
        System.out.println("");
    }
    else if ((anzahl == 0) && (downloadMoeglich))
            {
                System.out.println("Der Film '" + bezeichnung + "' ist nicht verfügbar. Download möglich.");
                System.out.println();
                
            }
    else 
     {
                System.out.println("Der Film '" + bezeichnung + "' ist nicht verfügbar. Leider ist kein Download möglich.");
                System.out.println();   
     }
    }
  
  void download (int tageVerliehenP)
  {
      if (((downloadMoeglich) && (anzahl == 0)))
      {
        this.tageVerliehen = tageVerliehenP; 
          System.out.println("Der Film '" + bezeichnung + "' steht ihnen " + tageVerliehen + " Tage zum Download und zur Nutzung zur Verfügung.");
          System.out.println();
      }
      else
      { 
          System.out.println("Der Film '" + bezeichnung + "' steht nicht zum Download zur Verfügung.");
          System.out.println();
      
  
  }
  
  }
  void rueckgabe ()
  {
      System.out.println(ausleiher.name + "  -  " + ausleiher.adress);
      System.out.println("Kundennummer: " + ausleiher.kundennr);
     double rechnungsBetrag;
     if (tageVerliehen <= 3) 
     {
         rechnungsBetrag = tageVerliehen * leihgebuehr;
     }
     else {
         rechnungsBetrag = 3 * leihgebuehr + (((tageVerliehen - 3) * (leihgebuehr * 0.70)));
     }
     System.out.print("Sie haben '" + bezeichnung + "' für " + tageVerliehen + " Tage"+ " ausgeliehen . Bitte zahlen Sie ");  System.out.printf("%.2f", rechnungsBetrag); System.out.print(" € "); 
     System.out.println();
     System.out.println();
     this.tageVerliehen = 0;
  }
}
```


```
public abstract class Leihmaterial {
    
    /* In der Superklasse Leihmaterial werden alle Instanzvariablen erzeugt, 
    die in allen drei Unterklassen Film, Spiel und PC-Programm verwendet werden.*/
    
    
   int kennung, anzahl, zeitraum, tageVerliehen,tageVorbestellt;
   String bezeichnung, kurzbezeichnung;
   double leihgebuehr;
   boolean download;
```


----------



## chalkbag (3. Jan 2014)

Du setzt auch immer den gleichen Kunden, Kunde[0].


```
Filme[1].verleihen(Kunde[0], 3);
    Filme[9].verleihen(Kunde[0],2);
    Filme[4].verleihen(Kunde[0],5);
    Filme[0].verleihen(Kunde[0],10);

    Filme[7].verleihen(Kunde[0],2);
    Filme[8].verleihen(Kunde[0],5);
```


----------

