Announcement

Collapse
No announcement yet.

Objekt in Arrayobjekt abspeichern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Objekt in Arrayobjekt abspeichern

    Hallo,

    ich habe folgendes Problem:

    Ich habe einen Vektor in dem verschiedene Objekte der
    selbstgeschriebenen Klasse Data enthalten sind.
    Diese Objekte prüfe ich auf den Bearbeitungszustand.
    Objekte, deren Bearbeitungszustand auf "ja" stehen
    sollen nun ein ein Array Objekt (DoneArray) kopiert werden, welcher
    dann zurückgegeben wird.
    Leider bekomme ich immer wieder Fehlermeldungen des Compilers, die ich
    nicht so ganz nachvollziehen kann.

    Hier einfach mal der Code:

    public Data[] ShowDoneList()

    {

    int a = Liste.size();


    Data[] DoneArray = new Data[a];

    Data f;

    for(int i=0; i<a; i++)

    {

    f = (Data) Liste.get(i);
    String Z = f.getBearbeitungszustand();

    int r = Z.compareTo("ja");

    if (r==0)

    {
    DoneArray = {"f"};

    }

    }

    return DoneArray;

    }

    Wäre toll, wenn mir da jemand helfen könnte!

    cu

  • #2
    So wie es ausschaut liegt bei DoneArray = { "f" }; der Fehler - wenn dies ueberhaupt klappt (also ohne ""), erzeugst Du immer ein einelementiges Array mit dem gerade aktuellen Wert, Du addierst damit nicht Werte zu einem Array.<p>
    Du hast eine dynamische Datenstruktur (Vector Liste), in der lauter Data-Objekte stehen. Und Du willst daraus eine statische Datenstruktur bauen, die in einem Array alle bearbeiteten Objekte haelt. Da ist Data[] DoneArray = new Data[Liste.size()]; schon schlecht, weil das Array dann groesser wird als Du es tatsaechlich brauchst und Du hinterher bei jedem Zugriff auf das Array immer pruefen musst, ob an diesem Index wirklich ein Data-Objekt oder null ist.<p>
    Ich wuerd so vorgehen:<pre>
    public Data[] ShowDoneList() {

    // im ersten Schritt den Vector durchlaufen und alle betreffenden Elemente in einen doneVector speichern
    Vector doneVector = new Vector();
    for(Enumeration en = Liste.elements(); en.hasMoreElements() {
    Data anEntry = (Data)Liste.nextElement();
    if(anEntry.getBearbeitungszustand().equals("ja")) {
    doneVector.add(anEntry);
    }
    }

    // im zweiten Schritt ALLE Werte aus doneVector in ein Array "umkopieren"
    Data[] doneArray = new Data[doneVector.size()];
    int i = 0;
    for(Enumeration en = doneVector.elements(); en.hasMoreElements() {
    doneArray[i++] = (Data)en.nextElement();
    }

    return doneArray;
    }</pre><p>
    Uebrigens, man sollte sich an die Java-Konvention halten und fuer Methoden und Variablen immer kleine Anfangsbuchstaben verwenden, um sie besser von Klassen (grosse Anfangsbuchstaben) und Konstanten (alles grossgeschrieben) unterscheiden zu koennen. Bis auf Liste und ShowDoneList habe ich es eingebaut <p>
    Gruss, Marc

    Comment


    • #3
      Hallo Marco,

      Super, es funzt !!!;-)
      Vielen Dank für die Hilfe !!!!

      Werde mich auch mal an den Tipp mit der Java Konvention halten!

      cu;-)

      Gruß,

      Dir

      Comment

      Working...
      X