ilch Forum » Allgemein » HTML, PHP, SQL,... » Java: Konstruktor in eine Schleife

Geschlossen
  1. #1
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Guten Tag,
    Ich bin gerade dabei etwas Neues in Java zu programmieren. Dabei habe ich jetzt knapp 60 Zahlenfelder, die unter- und nebeneinander als Oberflächenelemente da stehen würden.
    Das würde auch heißen, dass ich jetzt knapp 60 mal jedes Element einzeln erstellen müsste.

    Gibt es eine Möglichkeit, dass ich den Konstruktor z.B. in einer For-Schleife packe, der dann automatisch die Felder 0 bis 60 mit einer Zählervariablen aufstellt?

    Ich denke das wäre sehr "Quelltext-schonend".

    Mfg
    Recognize21
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Ithron Hall Of Fame
    Registriert seit
    21.01.2006
    Beiträge
    2.659
    Beitragswertungen
    24 Beitragspunkte
    for(int i = 0; i < 60; i++)
    {
    new MySuperClass();
    }


    Ehrlich: Ich habe keine Ahnung was du machen möchtest.
    ZitatZitat geschrieben von loW

    Ja ich habs gesehen und wenn ichs kostenlos bekomm dann zahl ich doch nix dafür oder?
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Java programmiere ich derzeit mit Eclipse.

    Da heißt es ja folgendermaßen:
    feld1 = new ZahlenFeld(10, 10, 150, 15);
    feld2 = new ZahlenFeld(10, 30, 150, 15);
    feld3 = new ZahlenFeld(10, 50, 150, 15);
    ....

    Davon benötige ich 60-70 Felder.
    Das würde ich gerne in einer for-Schleife machen, wenn das möglich ist.
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Ithron Hall Of Fame
    Registriert seit
    21.01.2006
    Beiträge
    2.659
    Beitragswertungen
    24 Beitragspunkte
    warum sollte es das nicht?

    ZahlenFeld[] felder = new ZahlenFeld[60];

    for (int i = 1; i <= 60; i++)
    {
    felder[i] = new ZahlenFeld(10, (10 + (20 * i)), 150, 15);
    }

    irgendwie sowas?
    ZitatZitat geschrieben von loW

    Ja ich habs gesehen und wenn ichs kostenlos bekomm dann zahl ich doch nix dafür oder?
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Ja, irgendwie sowas: Genau zunge
    Genau das mit dem [i] bekomm ich nicht hin.
    Da meckert er rum, wenn ich das so hinschreibe mit der Fehlerbeschreibung "felder kann nicht aufgelöst werden". Das [i] beachtet er als Namen erst gar nicht.

    Weiß nicht wie ich diese Variable an den Namen des Objektes dran bekomme...
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Der Gedanke stimmt ja auf jeden Fall. Nur an der Umsetzung hapert’s noch.
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    XxMaTzExX Mitglied
    Registriert seit
    28.05.2008
    Beiträge
    1.039
    Beitragswertungen
    14 Beitragspunkte
    poste doch mal deinen ganzen code :-)
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    package Liste;
    import basis.*;
    
    public class KListe {
    	private Fenster fenster;
    	private ZahlenFeld z1, z2, z3, z4, z5, z6, z7, z8, z9, z10, z11, z12, z13, z14, z15, z16, z17, z18, z19, z20, z21, z22,...;
    	
    	public KListe(){
    		for (int i = 1; i <= 60; i++){
    			z1 = new ZahlenFeld(150, 20+x, 100, 15);
    			x = x + 25;
    		}
    }


    Und anstatt z1 = new ZahlenFeld (so würde er ja 60 mal das gleiche Zahlenfeld erstellen), soll der alle Zahlenfelder von 1-60 untereinander erstellen.


    Zuletzt modifiziert von Recognize21 am 05.04.2011 - 18:23:03
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Ithron Hall Of Fame
    Registriert seit
    21.01.2006
    Beiträge
    2.659
    Beitragswertungen
    24 Beitragspunkte
    x gibts schonmal nicht in deinem code, da sollte es sowieso knallen..

    ansonsten kannst du keine variablenbezeichnung aus zwei anderen variablen zusammenstellen. Deswegen array (bzw. generische List, keine Ahnung ob Java sowas hat.. wer braucht schon Java lächeln )
    ZitatZitat geschrieben von loW

    Ja ich habs gesehen und wenn ichs kostenlos bekomm dann zahl ich doch nix dafür oder?
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Das x war vor lauter ausprobieren wohl abhanden gekommen zunge

    Ja, aber wie geht das denn??
    Ich könnte mir vorstellen:
    String name "z" + i;
    name = new ZahlenFeld(...);

    Klappt aber alles nicht.
    In Java gibt es auch arrays zunge Das wäre dann z.B. int x []; oder int x[][];

    Bekomme es dennoch nicht hin.
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    SeToY Mitglied
    Registriert seit
    29.06.2006
    Beiträge
    1.928
    Beitragswertungen
    43 Beitragspunkte
    ZitatZitat geschrieben von Ithron

    warum sollte es das nicht?

    ZahlenFeld[] felder = new ZahlenFeld[60];

    for (int i = 1; i <= 60; i++)
    {
    felder[i] = new ZahlenFeld(10, (10 + (20 * i)), 150, 15);
    }

    irgendwie sowas?


    Warum befüllst du array[0] nicht? ^^ Besser wäre doch

    [...] = new ZahlenFeld[60];
    for(int i=0; i <=59; i++)
    {
    [...]
    }



    Zuletzt modifiziert von SeToY am 05.04.2011 - 19:24:17
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Ithron Hall Of Fame
    Registriert seit
    21.01.2006
    Beiträge
    2.659
    Beitragswertungen
    24 Beitragspunkte
    Jopp, da hätte im Index nen -1 gefehlt, wollte die Berechnung in der For-Schleife nicht verändern.. Bis mir im Nachhinein auffiel das man eh mit 0 anfangen muss bei meiner Rechnung ;-)

    Du hast also Recht.

    Recognize: Das geht nicht, und das ist auch gut so (zusammenstellen einer variable)
    ZitatZitat geschrieben von loW

    Ja ich habs gesehen und wenn ichs kostenlos bekomm dann zahl ich doch nix dafür oder?
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    SeToY Mitglied
    Registriert seit
    29.06.2006
    Beiträge
    1.928
    Beitragswertungen
    43 Beitragspunkte
    ZitatZitat geschrieben von Ithron

    Du hast also Recht.


    Krass, darauf geh' ich jetzt erstmal feiern (: lachen
    1 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Das klappt nicht, SeToY (Wenn ich dich richtig verstanden habe...
    Ich habe bevor ich den Array erstelle mal einen kleinen Test gemacht:

    String ZFName = "z1";
    for (int i = 1; i <= 38; i++){
    ZFName = new ZahlenFeld(150, 20, 100, 15);
    }

    Die Variable ZFName hätte in dem Beispiel also den Wert "z1" (so wie auch das erste Zahlenfeld heißt), aber das klappt nicht.

    Also geht so eine Erstellung jetzt grundsätzlich nicht oder wie?
    Es muss doch eine Alternative dazu geben, jedes Objekt einzeln zu erstellen.

    Du meintest doch, dass ich die FelderNamen in einen Array speichern soll oder?
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    SeToY Mitglied
    Registriert seit
    29.06.2006
    Beiträge
    1.928
    Beitragswertungen
    43 Beitragspunkte
    ZitatZitat geschrieben von Recognize21
    Wenn ich dich richtig verstanden habe...


    Ne, haste nich... Ich hab nur Mastermind Ithron verbessert ^^
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Könntest du mir mal den Code so schreiben, wie es wirklich funktioniert?
    Ich beiß mir grad die Zähne dran aus...


    Zuletzt modifiziert von Recognize21 am 05.04.2011 - 20:17:07
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    package Liste;
    import basis.*;
     public class KListe {
        private Fenster fenster;
        private ZahlenFeld [] felder;
        
        public KListe(){
            int x = 0;
            felder = new ZahlenFeld[60];
            for (int i = 0; i < 60; i++){
                felder[i] = new ZahlenFeld(150, 20+x, 100, 15);
                x = x + 25;
            }
    }
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Recognize21 Mitglied
    Registriert seit
    06.06.2010
    Beiträge
    288
    Beitragswertungen
    14 Beitragspunkte
    Vielen Dank! lächeln So klappt es wunderbar!
    Visit my website: externer Link
    Nun auch auf Facebook!
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten