A
Alfred Tetzlaff
Gast
Hallo, ich bin Schüler der Stufe 12 eines Gymnasiums in Nordrheinwestfalen und bin zur Zeit damit beschäftigt, meine Facharbeit zum Thema "Zufallsmethoden zur Berechnung von Pi und deren Umsetzung in der Informatik" zu schreiben. Dazu habe ich jetzt damit angefangen, ein Programm zum sogenannten Dartboardalgorithmus zu schreiben. Das ganze will aber nicht so wirklich wie ich will
Hier der Quelltext:
Die fettgedruckte Stelle ist die, die mir noch Schwierigkeiten bereitet, weil hier jedes mal 0 ausgegeben wird anstatt des berechneten Wertes für Pi. Ich habe mir schon mal überlegt, ob es eventuell am Variablentyp für pi liegen könnte, aber da habe ich auch schon einiges durchprobiert. Und es sei noch gesagt, dass die Variablen kreistreffer und quadrattreffer vernünftige Werte ergeben. Ich muss gestehen wirklich nicht gerade gut im Umgang mit Java zu sein und das hier ist auch mehr oder weniger nur das an Kentnissen, die man sich so im Schulunterricht aneignen kann. Für Verbesserungsvorschläge bin ich deshalb generell dankbar Schon einmal danke im Vorraus und ich hoffe, dass mein Hilfegesuch nicht gegen irgendwelche Forenregeln hier verstößt oder so.
Hier der Quelltext:
Code:
import sum.ereignis.*;
import sum.komponenten.*;
import sum.multimedia.*;
import sum.werkzeuge.*;
public class SuMAnwendung extends EBAnwendung
{
// Objekte
Stift meinStift;
Rechner meinRechner;
Etikett hatEtikett1;
Etikett hatEtikett2;
Etikett hatEtikett3;
Etikett hatEtikett4;
Etikett hatEtikett5;
Knopf hatKnopf1;
Textfeld hatTextfeld1;
int x, y, kreistreffer, quadrattreffer, wuerfe, pi;
public SuMAnwendung()
{
// Initialisierung der Oberklasse
super(1000, 500);
meinStift = new Buntstift();
meinRechner = new Rechner();
hatEtikett1 = new Etikett(450, 150, 100, 25, "Anzahl der Würfe");
hatEtikett2 = new Etikett(450, 200, 100, 25, "Pi");
hatEtikett3 = new Etikett(550, 200, 100, 25, "");
hatEtikett4 = new Etikett(450, 250, 100, 25, "Genauigkeit");
hatEtikett5 = new Etikett(550, 250, 100, 25, "");
hatKnopf1 = new Knopf(100, 450, 300, 25, "Los geht's!");
hatKnopf1.setzeBearbeiterGeklickt("hatKnopf1Geklickt");
hatTextfeld1 = new Textfeld(550, 150, 100, 25, "");
hatTextfeld1.setzeBearbeiterInhaltGeaendert("hatTextfeld1InhaltGeaendert");
hatTextfeld1.setzeBearbeiterEingabeBestaetigt("hatTextfeld1EingabeBestaetigt");
}
public void zeichne()
{
meinStift.hoch();
meinStift.bewegeBis(100, 100);
meinStift.runter();
meinStift.zeichneRechteck(300, 300);
meinStift.hoch();
meinStift.bewegeBis(250, 250);
meinStift.runter();
meinStift.zeichneKreis(150);
}
public void zufall()
{
while (wuerfe != 0)
{
x = meinRechner.ganzeZufallsZahl(100, 400);
y = meinRechner.ganzeZufallsZahl(100, 400);
meinStift.hoch();
meinStift.bewegeBis(x, y);
meinStift.runter();
meinStift.zeichneKreis(0);
if (((x-250)*(x-250)+(y-250)*(y-250)) <= 22500)
{
kreistreffer = kreistreffer + 1;
wuerfe = wuerfe - 1;
}
else
{
wuerfe = wuerfe - 1;
}
}
}
public void hatKnopf1Geklickt()
{
this.zeichne();
wuerfe = hatTextfeld1.inhaltAlsGanzeZahl();
quadrattreffer = wuerfe;
if (wuerfe != 0)
{
this.zufall();
[b]pi = kreistreffer/quadrattreffer;
hatEtikett3.setzeInhalt(pi);[/b]
hatEtikett5.setzeInhalt(1 - pi/Math.PI);
}
else
{
return;
}
}
public void hatTextfeld1InhaltGeaendert()
{
// Hier wird der Methodeninhalt eingefügt
}
public void hatTextfeld1EingabeBestaetigt()
{
// Hier wird der Methodeninhalt eingefügt
}
}
Die fettgedruckte Stelle ist die, die mir noch Schwierigkeiten bereitet, weil hier jedes mal 0 ausgegeben wird anstatt des berechneten Wertes für Pi. Ich habe mir schon mal überlegt, ob es eventuell am Variablentyp für pi liegen könnte, aber da habe ich auch schon einiges durchprobiert. Und es sei noch gesagt, dass die Variablen kreistreffer und quadrattreffer vernünftige Werte ergeben. Ich muss gestehen wirklich nicht gerade gut im Umgang mit Java zu sein und das hier ist auch mehr oder weniger nur das an Kentnissen, die man sich so im Schulunterricht aneignen kann. Für Verbesserungsvorschläge bin ich deshalb generell dankbar Schon einmal danke im Vorraus und ich hoffe, dass mein Hilfegesuch nicht gegen irgendwelche Forenregeln hier verstößt oder so.