Java:
//funkt. noch nicht
import java.util.Scanner;
class Marmelade
{
// Instanzvariablen
private String inhalt; // Art der Frucht im Glas
private String datum; // Datum des Abfüllens
private int menge; // Menge der Marmelade im Glas
// Konstruktor
public Marmelade( String inhalt, String datum, int menge )
{
this . inhalt = inhalt;
this . datum = datum;
this . menge = menge;
}
// Methoden
public boolean istLeer()
{
return ( menge == 0 );
}
public void ausgeben()
{
System.out.println ( inhalt + " " + datum + " " + menge + " Unzen." );
}
public void auftragen ( int unzen)
{
if ( !istLeer() )
{
if ( unzen <= menge )
{
System.out.println("Auftragen von " + unzen + " Unzen "
+ inhalt );
menge = menge - unzen;
}
else
{
System.out.println("Auftragen von " + menge + " Unzen "
+ inhalt );
menge = 0;
}
}
else
System.out.println("Keine Marmelade im Glas!");
}
}
class Vorratskammer
{
// Instanzvariablen
private Marmelade glas1;
private Marmelade glas2;
private Marmelade glas3;
private Marmelade glasAusgewaehlt;
private String ausgabeAuswahl;
// Konstruktor
public Vorratskammer( Marmelade glas1, Marmelade glas2, Marmelade glas3 )
{
this . glas1 = glas1;
this . glas2 = glas2;
this . glas3 = glas3;
glasAusgewaehlt = null;
ausgabeAuswahl = "\nTreffen Sie Ihre Auswahl (1, 2 oder 3). Exit -1:";
}
public Vorratskammer( Marmelade glas1,Marmelade glas2 )
{
this.glas1 = glas1;
this.glas2 = glas2;
this.glas3 = null;
glasAusgewaehlt = null;
ausgabeAuswahl = "\nTreffen Sie Ihre Auswahl (1,oder 2). Exit -1:";
}
public Vorratskammer( Marmelade glas1 )
{
this.glas1 = glas1;
this.glas2 = null;
this.glas3 = null;
glasAusgewaehlt = null;
ausgabeAuswahl = "\nLeider gibt es nur ein Glas (1 oder 1). Exit -1:";
}
// Methoden
public void ausgeben()
{
System.out.println("Die Vorratskammer enthaelt:");
if (glas1!=null)
{
System.out.println("1:");
glas1.ausgeben();
}
if (glas2!=null)
{
System.out.println("2:");
glas2.ausgeben();
}
if (glas3!=null)
{
System.out.println("1:");
glas3.ausgeben();
}
}
// wir setzen voraus, dass der Anwender eine richtige Auswahl trifft, 1, 2, oder 3
public boolean auswaehlen( int glasNummer )
{
if ( glasNummer == 1 && glas1 != null )
{
glasAusgewaehlt = glas1;
return true ;
}
else if ( glasNummer == 2&& glas2 != null )
{
glasAusgewaehlt = glas2;
return true ;
}
else if ( glasNummer == 3&& glas3 != null )
{
glasAusgewaehlt = glas3;
return true ;
}
else
return false;
}
// Auftragen der ausgewählten Marmelade
public void auftragen( int unzen )
{
glasAusgewaehlt . auftragen( unzen );
}
public String getAuswahl()
{
return ausgabeAuswahl;
}
public void ersetzen( Marmelade m , int slot )
{
if (slot == 1)
return new Vorratskammer(Marmelade m, Marmelade glas2, Marmelade glas3);
else if (slot == 2)
return new Vorratskammer(Marmelade glas1, Marmelade m, Marmelade glas3);
else if (slot == 3)
return new Vorratskammer(Marmelade glas1, Marmelade glas2, Marmelade m);
else
System.out.println("Falsche Sloteingabe");
}
}
class ZHU_Kap35_Auf3
{
public static void main ( String[] args )
{
Marmelade stachelbeer = new Marmelade( "Stachelbeer", "04.07.09", 12 );
Marmelade erdbeer = new Marmelade( "Erdbeer", "31.09.10", 8 );
Marmelade aprikosen = new Marmelade( "Aprikosen", "31.10.10", 16 );
Vorratskammer vorrat = new Vorratskammer( stachelbeer, erdbeer, aprikosen );
vorrat.ausgeben();
Marmelade kirsch = new Marmelade( "Kirsch", "01.07.09", 11 );
vorrat.ersetzen( kirsch, 3 );
vorrat.ausgeben();
}
}
Hello !!! Hier gehts um die ersetzten Methode( Zeile 146 bis 155). Ich habe sie so formuliert, geht aber nicht ganz. Im Lösungsabschnitt steht da folgende Variante :
Java:
public void ersetzen(Marmelade m, int slot)
{
if( slot == 1 )
glas1 = m;
else if( slot == 2 )
glas2 = m;
else
glas3 = m;
}
Die Lösung ist mir verständlich, aber warum funkt. meine Variante nicht ? Thx