Fredo: Fehler in for-schleife

Hey Leute,

ich hänge fest...

ich habe eine for-schleife in paint() programmiert, die eigentlich dafür sorgen soll, dass je ein Kreis pro Durchlauf so gezeichnet wird, dass zum Schluss eine Halbe Ellipse zu sehen ist. Leider wird irgendwie gar nichts gezeichnet. Warum? Vielleicht kann mir einer von euch helfen.

Hier der entsprechende Quelltext:

for ( int i = StartLbX; i <= StartLbX + breite && i*i <= (breite/2) * (breite/2); i+=5){

// X-Koordinate wird durch das steigende i beschrieben
         xKo_HK = i;

// Y-Koordinate wird über die Ellipsenfunktion (breite, höhe, X-Koordinate) berechnet
         double yKo_HK_ = (1/(höhe/2)) * (breite/2) * (Math.sqrt((breite/2)*(breite/2)-(i*i)));  //Ellipsenfunktion
         int yKo_HK = (int) yKo_HK_;

// Zeichnen der Momentanposition des HK's
         g.drawOval(xKo_HK ,yKo_HK + 3 ,6,6);
      }

P.S: Die Fehler ist nicht bei den Variablen, die hab ich hundertmal überprüft!

Danke schon mal
MfG Fredo

  1. Hallo Fredo,

    versuch es mal so:

    double yKo_HK_ = (1.0/(höhe/2.0)) * (breite/2) * (Math.sqrt((breite/2.0)*(breite/2.0)-(i*i)));

    Also alle Ziffern als Dezimalzahl angeben, dann sollte auch was rauskommen.

    Mit freundlichem Gruß
    Micha

    1. Also alle Ziffern als Dezimalzahl angeben, dann sollte auch was rauskommen.

      Danke funktioniert..

      MfG Fredo

      1. Hallo,

        Also alle Ziffern als Dezimalzahl angeben, dann sollte auch was rauskommen.
        Danke funktioniert..

        Weißt du auch wieso?

        Gruß
        Slyh

        1. Hallo Slyh,

          Weißt du auch wieso?

          Auch wenn Du mich nicht angesprochen hast, hätte ich in meiner Antwort die Frage wohl mit beantworten können (oder sollen?).

            
          double d = 1/Math.PI;  
          //entspricht  
          d = (int)1.0/Math.PI;
          

          durch die Angabe als Fließkommazahl

            
          double d = 1.0/Math.PI;  
          //entspricht  
          d = (double)1/Math.PI;
          

          Das Problem tritt auch nur in dieser Richtung int/double auf. Im vorliegenden Fall war gleich der erste Faktor betroffen:

          double yKo_HK_ = (1/(höhe/2)) * ...

          der damit zu Null wurde und somit das Produkt zu Null werden ließ.

          Btw. Seit wann dürfen Variablen auch Umlaute enthalten oder gab es hier keine Regelung?

          Mit freundlichem Gruß
          Micha