Array von Objekten erzeugen



  • Und wie kann man dann dem Konstruktor Parameter übergeben 😕



  • Damit erzeugst du lediglich ein Array. Für jedes Element des Arrays musst du new noch einmal aufrufen (diesmal mit Konstruktorparametern) also als Beispiel:

    Name[0] = new Objekt(1,2,3);
    Name[1] = new Objekt(4,5,6);
    Name[2] = new Objekt(7,8,9);
    Name[3] = new Objekt(9,0,1);
    


  • Ok, danke 🙂



  • Hm, also wenn ich folgendes schreibe:

    Square viereck [n]= new Square [n];

    dann bekomme ich folgende Fehlermeldung:

    ']' expected

    Ich benutze übrigens BlueJ unter Solaris. Wo liegt der Fehler 😕


  • Mod

    Michamab schrieb:

    Wo liegt der Fehler 😕

    Das erste [n] muss ein [] sein.



  • omg, darauf hätte ich Idiot auch selber kommen können 🙄



  • Ok, noch eine etwas andere Frage, stell die mal hier um das Forum nicht zuzumüllen, also, ich habe nun in einer Klasse X ein neues Objekt (einer anderen Klasse Y) erstellt, beziehungsweise eine Array von Objekten. Nun habe ich aber eine andere Funktion dieser Klasse X, die nun all diesen Objekten neue Eigenschaften zuweisen will. Allerdings wenn ich dort nun schreibe:

    name[n][r].macheWas();

    ... dann gibt er mir ne Fehlermeldung aus:

    cannot resolve symbol - variable name

    Kann mri jemand helfen, hilft mir eventuell das Schlüsselwort static weiter ? Ich benutze übrigens BlueJ unter Solaris 🙂



  • Ich will dir ja nicht Nachlässigkeit unterstellen aber ganz am Anfang hattest du dein Array Name genannt ... nun greifst du auf 'name' zu - das geht natürlich nicht 🙂

    Wenn ich dich falsch verstanden habe so poste doch ein wenig Code und am besten auch gleich die Fehlermeldung mit



  • Ok, also wie gesagt, ich habe eine Klasse X, in der werden vom Konstruktor n Objekte einer anderen Klasse erstellt. In einer anderen Funktion dieser Klasse sollen dann die Eigenschaften dieser Objekte verändert werden:

    // das hier ist eine vereinfachte Fassung
    class Pyramide
    {
       private int y;
    
       Pyramide (int y)
       {
          Square viereck[][] = new Square[y+1][y+1];
          for(int n = y; n > 0; n--)
          {
             for(int r = n; r > 0; r--)
             {
                viereck[n][r] = new Square();
                viereck[n][r].do_something();
                this.y = y;
             }
          }
       }
    
       public void macheWas()
       {
          for(int n = this.y; n > 0; n--)
          {
             for(int r = n; r > 0; r--)
             {
                viereck[n][r].do_something();
                // Hier kennt er das Objekt viereck nicht mehr ???
             }
          }
       }
    }
    

  • Mod

    Du willst außerhalb des Sichbarkeitsbereichs von "viereck" auf diese Variable zugreifen. Das geht natürlich nicht. Wenn du die Variable in mehreren Methoden nutzen möchtest, sollte sie vermutlich als Membervariable implementiert werden.



  • Würde ich ja auch machen, aber den Parameter für die Anzahl der Objekte bekomme ich ja erst im Konstruktor. Wie könnte man sowas machen ?


  • Mod

    class Pyramide 
    { 
       private int y;
       private Square [][] viereck;
    
       Pyramide (int y) 
       { 
          viereck = new Square[y+1][y+1];
    [...]
    


  • Ok, danke, wieder was gelernt 🙂


Anmelden zum Antworten