Hallo Leute,
Als ich vor kurzem noch zur Schule ging, haben wir über Objektorientierte Programmierung in Java gesprochen. Darunter auch Datenstrukturen wie der Verkettete Liste. Ich programmiere mit Eclipse. Alle Namen in den Codeschnipseln sind frei erfunden! Hier ein paar Codeschnipsel bevor ich das Problem erläutern kann:
Die Steuerungsklasse:
Hier der Wichtigste Ausschnitt aus der Klasse der Verketteten Liste:
Und die Funktion "Enthaelt" aus der Klasse VerketteteListe:
Hier die Klasse des Knotens (Kettenglied der Verketteten Liste):
Und zu guter letzt die Klasse Kontakt:
Hier mein Problem: Ich möchte von der Steuerungsklasse aus die Funktion enthaelt() aufrufen, um abzufragen, ob in der Liste jemand mit dem Vornamen "Franz" enthalten ist. Selbst wenn ich als Übergabeparameter einen neuen Kontakt anlege und Kontakt-Objektattribute genau abschreibe, gibt sie trotzdem ein falsch zurück. Sie gibt nur ein true zurück, wenn ich die Variable meinKontakt mit dem pointer auf einen Index als Übergabeparameter. Also z. B. MeineKontaktListe.enthaelt(MeinKontakt.inhalt(4));.Aber das ist ja kein richtiges benutzen der enthaelt-funktion. Wie lautet also die richtige Syntax, um abzufragen, ob in der Liste ein bestimmter Kontakt enthalten ist?
Als ich vor kurzem noch zur Schule ging, haben wir über Objektorientierte Programmierung in Java gesprochen. Darunter auch Datenstrukturen wie der Verkettete Liste. Ich programmiere mit Eclipse. Alle Namen in den Codeschnipseln sind frei erfunden! Hier ein paar Codeschnipsel bevor ich das Problem erläutern kann:
Die Steuerungsklasse:
Java:
public class Steuerung {
public static void main(String[] args) {
// TODO Auto-generated method stub
Kontakt meinKontakt;
VerketteteListe<Kontakt> MeineKontaktListe = new VerketteteListe<Kontakt>();
MeineKontaktListe.anhaengen( new Kontakt( "Schmitt", "Holger", "H.Schmitt@web.de", "0711 88888" ) );
MeineKontaktListe.anhaengen( new Kontakt( "Müller", "Klaus", "K.Mueller@web.de", "0711 0815" ) );
MeineKontaktListe.anhaengen( new Kontakt( "Maier", "Fritz", "F.Maier@gmail.com", "0711 007" ) );
MeineKontaktListe.anhaengen( new Kontakt( "Schmidt", "Franz", "F.Schmidt@web.de", "0711 318810" ) );
MeineKontaktListe.anhaengen( new Kontakt( "Wolf", "Bernd", "B.Wolf@gmail.com", "0711 319910" ) );
int anzahlKontakte = MeineKontaktListe.anzahl_elemente();
for ( int i=0; i < anzahlKontakte; i++ ) {
meinKontakt = MeineKontaktListe.inhalt(i);
meinKontakt.ausgebenKontakt();
}
if (MeineKontaktListe.enthaelt(Kontakt("*", "Franz", "*", "*"))) {
System.out.println("In der Liste ist jemand mit dem Vornamen Franz enthalten");
}
}
}
Java:
Typ inhalt (int pIndex) {
if( pIndex < 0 ) { return null; }
Knoten<Typ> meinKnoten = erster;
for ( int i = 0; i < pIndex; i++ ) {
if ( meinKnoten == null ) { return null; }
meinKnoten = meinKnoten.gibNaechsten();
}
if ( meinKnoten == null ) { return null; }
return (Typ)meinKnoten.gibInhalt();
} // end of inhalt
Java:
boolean enthaelt ( Typ pInhalt ) {
Knoten<Typ> meinKnoten = erster;
while (meinKnoten != null) {
if ( (Typ)meinKnoten.gibInhalt() == (Typ)pInhalt ) {
return true;
}
meinKnoten = meinKnoten.gibNaechsten();
}
return false;
} // end of enthaelt
Java:
public class Knoten<Typ> {
private Typ inhalt;
private Knoten<Typ> naechster;
Knoten( Typ pInhalt ) {
inhalt = pInhalt;
}
void setzeNaechsten( Knoten<Typ> pKn ) {
naechster = pKn;
}
Knoten<Typ> gibNaechsten() {
return naechster;
}
void setzeInhalt( Typ pInhalt ) {
inhalt = pInhalt;
}
Typ gibInhalt() {
return (Typ)inhalt;
}
}
Java:
public class Kontakt {
String aName;
String aVorname;
String aEMail;
String aTelefon;
public Kontakt ( String pName, String pVorname, String pEMail, String pTelefon ) {
aName = pName;
aVorname = pVorname;
aEMail = pEMail;
aTelefon = pTelefon;
}
}