While-Schleife Java

diesamy

Mitglied
Hallo Ihr Lieben,

undzwar habe ich die Aufgabe mit HIlfe einer Java While-Schleife konzentrische Kreise zu programmieren - also Kreise die immer größer werden.
Leider ist die While-Schleife in meinem Informatikbuch nicht so verständlich erklärt :noe:

Nun sieht mein Quellcode so aus :

[Java] import java.applet.*;
import java.awt.*;

/* Mit diesen beiden Befehlen werden die Klassenbibliotheken eingefügt, dabei lässt - .applet - erkennen,
dass es sich um ein Applet handelt,
- .awt - (Advaced Window Toolkit) gewährleistet die Darstellung von beispielsweise Buttons.*/

public class KonzentrischeKreise2 extends Applet {


/* Ich gebe meinem Projekt den Namen Konzentrische Kreise und öffne gleichzeitig mit - public class -
den Konstruktor.*/

int a = 10; int b = a;

public void paint (Graphics stift) {

/* Durch -void paint- kann ich nun die Methode paint hervorrufen. Mein Graphik-Objekt nenne ich Stift.
Zwischen den geschweiften Klammern bringe ich nun Anweisungen an den Stift unter. */


while (b<=50) {

a=a+1;


stift.drawOval ( 599, 299, a, b);

/* mit dem Befehl -drawOval (x,y,a,b); - gebe ich nun den Befehl ein Oval zu zeichen. Mit x und y lege ich den Punkt in der linken
Oberen Ecke des Applets fest. Sind a = Breite und b= Höhe gleich, zeichnen wir einen Kreis. Da mein Applet eine Ausdehnung von 1200x600 Pixel
haben soll, und meine Kreise genau in der Mitte des Rechteckes liegen sollen, berechne ich zu erst den Mittelpunkt.
Dieser liegt bei x=600 (600 Pixel nach rechts) und y= 300 (300 Pixel nach unten).
Mein Ursprungskreis soll einen Radius von 1 haben, dabei entsprechen a und b dem Durchmesser, also = 2.
Nun ziehe ich von den Punkten x,y meines Mittelpunkts jeweils den Wert meines Radius ab um den linken oberen Punkt zu erhalten durch den mein Kreis laufen soll.
a und b bleiben gleich. */




}
}
}

[/Java]

funkrionieren tuts aber nicht 🙁 Ich weis einfach nicht weiter 🙁

Vielleicht könnt ihr mir ein paar Ratschläge geben 🙂

Liebe Grüße
Sonja
 
Die Variable b wird an keiner Stelle verändert.

Daher ist die Bedingung immer "true", und Du bekommst, wenn ich das richtig verstehe, eine Endlosschleife.

Java:
while(Bedingung)
{
    // Anweisung
}


b muss irgendwo in der Schleife inkrementiert werden

Java:
b = 10; 
while(b < 50)
{
    // Anweisung
    b++;
    // oder: b += 10;
}

Hilft das?
 
Zuletzt bearbeitet von einem Moderator:
du brauchst dein a = a+1 noch. ich würde sogar sagen, dass du es zu a++ veränderst. Es hat den selben Effekt und sieht, finde ich zumindest, schöner aus 🙂 Du müsstest das a weiterhin inkrementieren:
Java:
while(a<=50) { 
a++; // Identisch  zu a = a + 1;
b=a; // Da du kein Objekt hast und die Neuzuweisung wie vor der Schleife immer wieder wiederholen musst.
}

Dazwischen drin lässt du dein Kreis zeichnen. Deine x und y-Werte ändern sich dadurch nicht, da du die fest eingegeben hast. Das heißt, dein Kreis würde sich von der angegebenen Position nicht wegrühren, obwohl es sich vergrößert. Es würde sich nach unten hinweg entwickeln.
 
Nur mal am Rande bemerkt: An deinen Kommentaren ist so ziemlich alles falsch, was man falsch machen kann. Sie sind nicht nur total überflüssig, sondern auch inhaltlich vollkommen falsch. Wenn sie dein derzeitiges Verständnis der Schlüsselwörter widerspiegeln, solltest du dir dringend noch mal die Grundlagen anschauen.
 
Ich hab Java leider erst seit 2 Wochen im Unterricht und muss die Kommentare angeben für meinen Lehrer - inwiefern sind sie denn falsch ?
 
  • mit "public class Irgendwas" deklarierst du eine Klasse und "öffnest" keinen Konstruktor. Der Konstruktor wird bei der Objekterzeugung aufgerufen.
  • mit "public void Methodenname" deklarierst du eine Methode und rufst sie nicht auf. Methoden werden zur Laufzeit aufgerufen.
Außerdem sind sie bei dir immer unter dem kommentierten Code. Falsche Stelle - Kommentare kommen drüber!

Davon abgesehen sind deine Kommentare nichts weiter, als den Quelltext noch mal zu wiederholen. Das ist (mal von JavaDoc-Kommentaren abgesehen) aber ganz und gar nicht die Aufgabe von Kommentaren. Sie sind dazu da, kurz und knackig den Kontext und Besonderheiten zu erläutern.
 

Zurück
Oben