Keksdose

Status
Nicht offen für weitere Antworten.

Phantomas

Neues Mitglied
Hi, wir sollen im Informatik (Einführungskurs) 2 Klassen (keksdose und Keks implementieren und später z.B. Kekse dieser Keksdose hinzufügen. So weit so gut.
Anbei mal der eigentlich fertige Code. Bin irgendwie nur mit der Ausgabe nicht einverstanden. Er sagt mir dauernd:

Keks@addbf1
Keks@42e816
Keks@9304b1


Würde mich freuen, wenn ihr mir helfen könnt.

Code

Code:
        class Keksdose{
        final int KAPAZITAET=3;
        int anzahl;
        Keks[] keks;
        Keksdose(){

                keks= new Keks[KAPAZITAET];
                anzahl=0;
        }
        void einfuegen(Keks k){
                keks[anzahl]=k;
                anzahl++;
                System.out.println(k);
        }
        // Kontrolle, ob Keks mit bestimmter Sorte enthalten ist
        boolean enthaelt(String sorte){
                String sor= sorte.toLowerCase();
                boolean enthaelt=false;
                for (int i=0; i<KAPAZITAET; i++){
                        if (sorte.equals(keks[i])||sor.equals(keks[i])){
                                enthaelt=true;
                        }
                }
                System.out.println("Die Kekssorte ist in der Dose enthalten: "+enthaelt);
                return enthaelt;
        }
        void ausgeben(){
                System.out.println(anzahl);
        }
}

Code:
class Keks{
        String sorte;
        Keks(String sort){
                this.sorte=sort;
        }
        void ausgeben(){
                System.out.println(this.sorte);
        }
}


Code:
class TestKeksenew{
        public static void main(String[] args){
                // Erzeugen Sie ein Objekt der Klasse Keksdose der Kapazitaet 3
                // Fuegen Sie drei Kekse zur Keksdose hinzu
                Keksdose kd = new Keksdose();
                Keks k1 = new Keks("Butterkeks");
                Keks k2 = new Keks("Doppelkeks");
                Keks k3 = new Keks("Hartkeks");
                kd.einfuegen(k1);
                kd.einfuegen(k2);
                kd.einfuegen(k3);
                // Geben Sie die Informationen ueber die Keksdose aus.
                System.out.print("Die Dose enthaelt folgende Anzahl an Keksen: ");
                kd.ausgeben();
                System.out.println("\nDiese Sorten sind enthalten: ");
                k1.ausgeben();
                k2.ausgeben();
                k3.ausgeben();
                // Testen Sie ob die Keksdose einen Butterkeks enthaelt. Geben Sie das
                // Resultat auf der Konsole aus.
                // Ausgabe der Kekse
                kd.enthaelt("Butterkeks");
        }
}
 
S

SlaterB

Gast
>void einfuegen(Keks k)
> {
> keks[anzahl] = k;
> anzahl++;
> System.out.println(k);
> }

was soll denn hier bei
> System.out.println(k);
ausgegeben werden?

Java kann sich doch nicht ausdenken, was du da gerne hättest,
das muss du genau spezifizieren,
entweder rufst du selber k.ausgeben() auf, statt System.out.println(k)

oder du überschreibst die public String toString()-Methode von Keks
 

Quaxli

Top Contributor
Das Programm funktioniert doch eigentlich. Meiner Ansicht nach solltest Du nur die Ausgabe, die SlaterB oben angesprochen hat auskommentieren.

Der Rest sieht gut aus

Code:
Die Dose enthaelt folgende Anzahl an Keksen: Anzahl = 3

Diese Sorten sind enthalten: 
Keks = Butterkeks
Keks = Doppelkeks
Keks = Hartkeks
Die Kekssorte ist in der Dose enthalten: false

(Ich hab nur in die println-Anweisung noch'n "Keks = " bzw. "Anzahl = " eingebaut (nur für mich))
 

Quaxli

Top Contributor
Hab' gerade noch einen Fehler entdeckt:

Code:
	// Kontrolle, ob Keks mit bestimmter Sorte enthalten ist
	boolean enthaelt(String sorte) {
		String sor = sorte.toLowerCase();
		boolean enthaelt = false;
		for (int i = 0; i < KAPAZITAET; i++) {
			if (sorte.equals(keks[i].sorte) || sor.equals(keks[i].sorte)) {
				enthaelt = true;
				break;
			}
		}
		System.out.println("Die Kekssorte ist in der Dose enthalten: " + enthaelt);
		return enthaelt;
	}


Der Vergleich muß auf keks.sorte laufen, nicht auf keks. Noch besser wäre natürlich eine get-Methode, welche die Sorte als String zurück liefert. Und ein break sobald der boolean true ist, sonst ist er vielleicht in der nächsten Runde wieder false ;)
 
G

Guest

Gast
Hey vielen Dank für die schnellen Antworten. Bin grad noch unterwegs. Werd mich aber die Tage da noch mal ransetzen.
Merci!
Grüße
 
G

Guest

Gast
so ich habe das nochmal probiert und einen gravierenden fehler bemerkt:
man muss den namen der Keksdose statt "kd" auch auf "keks" setzen und mit dem break und dem keks.sorte klappt das dann alles

blöd nur, dass die anfänglichen kekse entweder komplett groß oder komplett klein geschrieben werden müssen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben