Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » ObjektListe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.02.2006, 21:03 Uhr
Meuterich



Hei,

also das Prog soll eine Liste aus Elementen erstellen, aber funzt aus irgendeinem
Grund nicht. Es kommt keinerlei Fehlermeldung, was in soweit ein Problem ist dass
ich einfach nicht weiterkomme. :/
Ich habe zum ueberpruefen bei jedem Schritt eine Ausgabe erstellt so dass ich
vielleicht den Fehler finde, aber tu ich nicht

Die Asugabe in der Konsole sieht folgendermassen aus:

Code:
i = 0
Kopf erstellt: Hannes
i = 1
Der Kopf: Berta
eNF erstellt: Berta
i = 2



Und dann passiert garnix mehr .... kann mir da wer helfen, ich denke das es
einfach nur irgendwo ein Uebergabefehler ist abe rich seh den Baum vor Lauter
Waeldern nicht :/


C++:
class Listenspielerei
{
public static void main(String[]uviktig)
{
String [] sElementArray = {"Hannes","Berta","Cesar","Klaus","Heiner"};
Liste Liste = new Liste();

for(int i = 0 ; i < sElementArray.length ; i++)
    { System.out.println("i = " + i);
      Liste.elementAnhaengen(sElementArray[i]);
    };// ende for(i)

Liste.drucken();

};// ende main
}// ganz am ENDE



/* andere Klassen **********************************************************/

class Liste
    { static Element eKopf;
      static Element eZeiger;

      Liste()
          { eKopf = eZeiger = null; }

/* Methoden ****************************************************************/
    static void elementAnhaengen(String sEName)
        { if(eKopf == null) kopfErstellen(sEName);
            else nachfolgerErstellen(sEName);
            return;
        }
        
    static void kopfErstellen(String sEName)
        { eKopf = new Element(sEName);
            System.out.println("Kopf erstellt: " + eKopf.sEName);
          return;
        }
    
    static void nachfolgerErstellen(String sEName)
        { for(eZeiger = eKopf ; eZeiger.eNF != null ; eZeiger = eZeiger.eNF)
            { };
            eZeiger.eNF = new Element(sEName);
            System.out.println("Der Kopf: " + eKopf.sEName);
            System.out.println("eNF erstellt: " + eZeiger.sEName);
            return;
        }
        
    static void drucken()
        { System.out.println("\n");
          for(eZeiger = eKopf ; eZeiger != null ; eZeiger = eZeiger.eNF)
            System.out.print(Element.sEName + "->");
          System.out.println("\n");
        }
}

class Element
    { static String sEName;
        static Element eNF;
  
      Element(String sEName, Element eNF)
          { this.sEName = sEName;
            this.eNF = eNF;
        };
        
      Element(String sEName)
          { this(sEName, null);
          };
      
    }



Edit: code durch cpp darstellung ersetzt
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.

Dieser Post wurde am 15.02.2006 um 22:03 Uhr von Meuterich editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.02.2006, 21:19 Uhr
KaraHead



Ganz schön hart dein Code
Sag mal erst was der Code im Normallfall machen soll.

Ich korrigier mal ein bischen deinen Code:

C++:
class Listenspielerei
{
public static void main(String[] args)
{
String [] sElementArray = {"Hannes","Berta","Cesar","Klaus","Heiner"};
Liste liste = new Liste();  //variabeln sollten mit einem Kleinbuchstaben beginnen

for(int i = 0 ; i < sElementArray.length ; i++)
{
  System.out.println("i = " + i);
  liste.elementAnhaengen(sElementArray[i]);
};// ende for(i)

liste.drucken();

};// ende main
}// ganz am ENDE



/* andere Klassen **********************************************************/

class Liste
{
  Element eKopf = null; //warum static wenn du eh eine Instanz der Klasse Liste erstellst
  Element eZeiger = null;

      Liste()
      {
        //Nullzuweisung solltest du beim deklalieren machen
      }

/* Methoden ****************************************************************/
    void elementAnhaengen(String sEName)
    {
      if(eKopf == null)
        kopfErstellen(sEName);
      else
        nachfolgerErstellen(sEName);
      }
        
    void kopfErstellen(String sEName)
    {
      eKopf = new Element(sEName);
      System.out.println("Kopf erstellt: " + eKopf.sEName);
       //   return ist nicht notwendig, da die Funktion sowieso hier endet
     }
    
    void nachfolgerErstellen(String sEName)
    {
      for(eZeiger = eKopf ; eZeiger.eNF != null ; eZeiger = eZeiger.eNF)
            { }; //sehr komisch ;)
            eZeiger.eNF = new Element(sEName);
            System.out.println("Der Kopf: " + eKopf.sEName);
            System.out.println("eNF erstellt: " + eZeiger.sEName);
        }
        
    void drucken()
    {
      System.out.println("\n");
          for(eZeiger = eKopf ; eZeiger != null ; eZeiger = eZeiger.eNF)
            System.out.print(Element.sEName + "->");
          System.out.println("\n");
     }
}

class Element
    { String sEName;
       Element eNF;
  
      Element(String sEName, Element eNF)
          { this.sEName = sEName;
            this.eNF = eNF;
        };
        
      Element(String sEName)
          { this(sEName, null);
          };
      
    }



Achja, benutz die cpp - Tags, die sind ähnlich der Java Syntax, danke.

Dieser Post wurde am 15.02.2006 um 21:21 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.02.2006, 22:06 Uhr
Meuterich



Hei,

nun, der Code soll die Teile des Arrays in einzelne Elemente speichern und daraus eine
Liste machen. Danach mit der Methode drucken() diese ausgeben. sonst nix weiter

Etwa so:


static hab ich genommern weil der Compiler meinte das da ein static fehlt :/
Leider hab ich keine Ahnung was static genau bedeutet...im Grunde hab ich nicht
mahl ne Ahnung

Wenn ich beim Konstruktor Liste() {} nichts in den {} stehen hab, dann
koennte ich den doch auch weglassen und den von Java spendierten Standardkonstruktor nehemen den ja eh jede class geschenkt bekommt, oder?

Kannst Du mir jetzt besser helfen?


cheers ,

Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.

Dieser Post wurde am 15.02.2006 um 22:09 Uhr von Meuterich editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.02.2006, 22:27 Uhr
Meuterich



Hei,

also _nu_ versteh ich garnix mehr...aber es funzt nun doch, ich habe lediglich
die kleinen Aendereungen vorgenommen, das null-zuweisen bei der Deklaration,
das static entfernt, aus irgendeinem Grund noergelt der Compiler nun auch nicht
mehr :/


Bash:

i = 0
Kopf erstellt: Hannes
i = 1
Der Kopf: Hannes
eNF erstellt: Hannes
i = 2
Der Kopf: Hannes
eNF erstellt: Berta
i = 3
Der Kopf: Hannes
eNF erstellt: Cesar
i = 4
Der Kopf: Hannes
eNF erstellt: Klaus


Hannes->Berta->Cesar->Klaus->Heiner->


So sieht es nun in meiner Konsole aus.
Egal wie, aber Du hast mir geholfen, danke.

cheers und gute Nacht,
Meuterich
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.02.2006, 22:28 Uhr
KaraHead




Zitat:

Wenn ich beim Konstruktor Liste() {} nichts in den {} stehen hab, dann
koennte ich den doch auch weglassen und den von Java spendierten Standardkonstruktor nehemen den ja eh jede class geschenkt bekommt, oder?


jupp kannst du weglassen.

OK, das was du versuchst hinzubacken ist glaube ich eine LinkedList (verkettete Liste).
Hab deinen Code ein bischen aufgefrischt.

C++:
public class LinkedList
{

    public Element start = null;

    public void appendElement(String elem)
    {
        Element newElem = new Element(elem, start);
        start = newElem;
    }

    public void print()
    {
        while (start != null)
        {
            System.out.println(start.value);
            start = start.next;
        }
    }

    public static void main(String[] args)
    {
        String[] arr = { "Hannes", "Berta", "Cesar", "Klaus", "Heiner" };
        LinkedList list = new LinkedList();
        for (int i = 0; i < arr.length; i++)
        {
            list.appendElement(arr[i]);
        }
        list.print();
    }

    public class Element
    {
        public String  value = null;

        public Element next  = null;

        public Element(String value, Element elem)
        {
            this.value = value;
            this.next = elem;
        }
    }

}



Vorsicht es ist ganz übler Stil aber es sollte reichen damit du verstehst worum es geht.

Für mich ist der Code selbsterklärend aber wenn dennoch Fragen offen sind, dann her damit
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.02.2006, 12:27 Uhr
Meuterich



Hei,

was ich bei deinem Code nit verstehe ist wie du wieder an den start kommst nachdem du
print() ausefuehrt hast, ich finds einfach nicht

Aber nun laeuft ja meine Liste...linkedList

cheers und danke nochal

Meuteirch
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.02.2006, 17:25 Uhr
KaraHead



Naja tut die Liste auch nicht, aber sind ja nur ein paar Handgriffe

C++:
public void print()
    {
        Element saved = start; //merkt sich, dass erste Objekt
        while (start != null)
        {
            System.out.println(start.value);
            start = start.next;
        }
        start = saved; //stellt start wieder auf das erste Objekt
    }

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.02.2006, 18:08 Uhr
Meuterich



stimmt, kein grosser Aufwand ^^
--
Eine Signatur wird unter jedem von Ihnen erstellten Beitrag angefügt.
Maximal 5 Linien, jedoch nicht mehr als 600 Zeichen.
ThWboard-Code-Tags werden bis auf [url] und [img] nicht berücksichtigt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: