Frage von ITanfaenger93, 47

Drei Fragen zur einem Applet das ich zeichnen soll (Musterlösung bei Details)?

ich soll ein Programm zum Zeichnen , dass 100 Kreisen mit zufälliger Position anzeigt, mit einem zufälligen Durchmesser mit bis zu 20 Pixeln.

Aufruf ist festgelegt mit -> g.drawOval(x,y,breite,hoehe);

Musterlösung lautet :

for (int n = 0; n<=100; n++);

int breite =(int)(Math.random()*20+1);

int hoehe = 20;

int x = (int) (Math.random()*getWidth());

int y = (int)(Math.random()*getHeight());

g.drawOval(x,y, breite, hoehe);

1. Frage: warum nicht man nicht nur Math.random? Math.random sagt doch aus, das es eine zufällige Zahl ist? Warum mal 20?

2. Frage: was sagt der Befehl getWidth(); oder getHeight();? aus? Warum schreibt man bei x und y nicht jeweils hin = Math.random*Math.random? Die Kreise sollten ja zufällig angeorndet sein?

3.Frage warum ist die hoehe fest mit 20 definiert? Müsste diese nicht gleich der breite sein? Sonst wären es ja keine Kreise

Hoffe um Aufklräung, Danke euch! :-)

Antwort
von PerfectMuffin, 20

1. Math.random() hat einen Wertebereich von [0,1), damit kommt man nicht ohne weiteres auf 20px Kreise.

2. Wieder Wertebereich.

3. Das stimmt und entweder hast du dir die Musterlösung falsch abgeschrieben, oder sie ist Blödsinn, denn
"(20*Math.random();+1)" ist nicht syntaktisch korrekt.

Kommentar von ITanfaenger93 ,

Danke für die Antwort, es könnte sein das mein Beitrag noch nicht  "freigegeben " war nach der bearbeitung..

zu Frage 2 : das mit dem Wertebereicht dachte ich mir schon, vorallem nach dem Math.random(); nur zwischen 0 und 1 ist, aber welchen Wertebereich deckt getHeight(); und getWidth(); ab

zu Frage 3: meine Lösung zu der 3. ist -> int hoehe = breite;

Vielen Vielen Dank!!

Kommentar von PerfectMuffin ,

2. Damit die überall im Component auftauchen können und nicht nur an einer Stelle oder offscreen..

3. Damit würdest du Kreise draus machen. Wenn es keine Ovale sein sollen, stimmt das.

Kommentar von ITanfaenger93 ,

Danke für deine Hilfe.

eine letzte Frage zur Nummer zwei:

Aber wenn der BefehlgetHeight(); und getWidth(); schon aussagt, dass es überall auftauchen kann, warum multiplziert man ihn dann zusätzlich noch mit Math.random(); ?

nochmal vielen Dank! :))

Kommentar von PerfectMuffin ,

getWidth und getHeight sind Funktionen, die, wie der Name schon sagt, die Höhe und Breite des Components zurückliefern. Das sind konstante Werte und wenn man einen Kreis mit konstanten Werten positioniert landet er logischerweise immer an der gleichen Stelle.

Das hier ist keine Magie, sondern einfache Mathematik.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten