Wer kann einem Java anfänger helfen?

    • ikeapwned
      ikeapwned
      Bronze
      Dabei seit: 15.01.2007 Beiträge: 1.605
      Hallo, eigentlich sollte ich mir für sone frage vll doch nen anderes forum suchen, aber vll kann ja hier von euch jmd zufällig java und kann mir bei folgendem Problem helfen (schreibe in 2 Tagen klausur):

      Ich habe einen Konstruktor definiert und dieser Konstruktor soll ich selbst wieder aufrufen, dass Problem ist allerdings das das ganze dann in einer endlosverschachtelung endet:

      code:
      	
      Schlaeger(int a) {
      		super(1,a,0,East);
      		        SL = new Schlaeger(a-1);
      		        SR = new Schlaeger(a+1);
      }

      d.h. ich müsste nun irgendwie es so hinkriegen, dass wenn der Konstruktor von SL aufgerufen wird nur den super befehl aufruft und nicht wieder sich selbst erstellt...
      Mit if weiss ich nicht recht wie ich das anstellen soll, da der Konstruktor ja immer wieder durch die Klasse eine Variable auf den ausgangswert setzt und somit keine unterscheidung möglich ist?
      Vielleicht kann mir ja einer weiterhelfen.
  • 10 Antworten
    • DocBru
      DocBru
      Bronze
      Dabei seit: 11.08.2007 Beiträge: 904
      Hm verstehe zwar nicht ganz was du da machst, aber hilfts dir nicht, wenn du einfach in den Konstruktur ne boolean Variable reingibst und die dann prüfst?


      So nach dem Motto:

      code:
      Schlaeger(int a, boolean recursive) {
      		super(1,a,0,East);
      		if (recursive) {
      		        SL = new Schlaeger(a-1, false);
      		        SR = new Schlaeger(a+1, false);
      		}
      }
      
      
      Schlaeger(int a) {
             this(a, true);
      }
      
    • ikeapwned
      ikeapwned
      Bronze
      Dabei seit: 15.01.2007 Beiträge: 1.605
      Ach kann ich 2 mal den gleichen Konstruktor in einer Klasse definieren? Welcher fühlt sich dann angesprochen, wenn ich in meinem Hauptprogramm den aufrufe? den mit 2 Variablen oder der mit einer?
    • DocBru
      DocBru
      Bronze
      Dabei seit: 11.08.2007 Beiträge: 904
      Der den du aufrust ;)

      also je nachdem wieviel Parameter du übergibst.


      EDIT: Also von außen wirst du dann wohl den aufrufen, der nur den int-Parameter hast. Den anderen solltest du evtl. sogar "Private" deklarieren, da er eigentlich keine Bedeutung hat für den Aufruf von außen und nur verwirrt.
    • ikeapwned
      ikeapwned
      Bronze
      Dabei seit: 15.01.2007 Beiträge: 1.605
      Vielen Dank, du hast mir jetzt schon sehr weitergeholfen!!!

      Habe jetzt gleich das nächste Problem, also irgendwie habe ich da noch nen denkfehler drinne...
      ich will jetzt in der klasse Schlaeger eine Methode move machen und die soll auf alle 3 Elemente angewendet werden, also:

      im Hauptteil habe ich dann von miraus folgendes stehen:

      Robot X = new Schlaeger(4);
      X.move();

      Jetzt soll das move noch auf SL und SR angewendet werden, und das soll in der Methode stehen. Also mit dem Befehl X.move(); soll X gemoved, SL gemoved und SR gemoved werden. Wie muss ich die Methode denn schreiben? move() ist in der urklasse schon vorhanden und soll überschrieben werden.
    • IbaracusI
      IbaracusI
      Bronze
      Dabei seit: 14.11.2006 Beiträge: 2.117
      irgendwie versteh ich nicht ganz was du da machen willst, aber vielleicht hilt dir ja das stichwort "singleton" weiter ...
    • ikeapwned
      ikeapwned
      Bronze
      Dabei seit: 15.01.2007 Beiträge: 1.605
      habs gelöst bekommen, vielen dank für eure Hilfe, hat mit viel zeit gespart!
    • pokersille
      pokersille
      Bronze
      Dabei seit: 28.01.2008 Beiträge: 565
      Mich würde mal interessieren, was du überhaupt mit der Klasse vorhast. Ich programmier nun schon ne ganze Weile objektorientiert, aber ich hab noch nie nen rekursiven konstruktor geschrieben. Schreib doch bitte nochmal genau, was die Klasse machen soll. Es gibt bestimmt ne elegantere Variante das zu lösen. Wenns dann doch rekursiv sein soll, dann würde ich standardmäßig abbrechen, wenn die Parameter einen bestimmten Bereich verlassen. Wenns nur ein rekusrionsschritt sein soll, ist die Variante mit den bools ok.
    • ikeapwned
      ikeapwned
      Bronze
      Dabei seit: 15.01.2007 Beiträge: 1.605
      ich habs mit nur einem konstruktor hingekriegt.
      Von daher hast du recht, es gab eine elegantere lösung :)
    • TehForce
      TehForce
      Bronze
      Dabei seit: 10.12.2006 Beiträge: 2.719
      rekursive konstruktoren kanns auch nicht geben, das gibt keinen sinn
    • pokersille
      pokersille
      Bronze
      Dabei seit: 28.01.2008 Beiträge: 565
      Original von TehForce
      rekursive konstruktoren kanns auch nicht geben, das gibt keinen sinn
      Ich stimm da zumindest soweit zu, das es keinen Sinn macht. Würde meine Hand aber nicht dafür ins Feuer legen, dass es sich nicht kompilieren lässt. Vielleciht hat ja einer Lust das mal auszuprobieren. Ich hab grad Semesterferien, da hat mein Eclipse auch mal Pause.