Methoden PI-Berechnung

Arthos

Mitglied
Ich habe auf Wikipedia (hier: Kreiszahl: Statistische Bestimmung) diesen Algorhythmus gefunden:

Java:
public static double approximiere_pi(int tropfenzahl) {
  double pi = 0;
  int innerhalb = 0;
  int gesamt = tropfenzahl;
 
  while (tropfenzahl > 0) { // generiere Tropfen und addiere je nach Zugehörigkeit
    double dotx = Math.random();
    double doty = Math.random();
 
    if (dotx*dotx + doty*doty <= 1) {
      // Punkt liegt innerhalb des Kreises
      innerhalb++;
    } else {
      // Punkt liegt außerhalb des Kreises
    }
 
    tropfenzahl--;
  }
 
  pi = 4*(double)innerhalb/gesamt;
  return pi;
}

Ich habe dann in diesem Programm versucht in der Kommandozeile eine Ausgabe mit dem Ergebnis zu machen, doch ich schaffe es nicht die Methode richtig aufzurufen. :(

Java:
class pi {
public static double approximiere_pi(int tropfenzahl) {
  double pi = 0;
  int innerhalb = 0;
  int gesamt = tropfenzahl;

  while (tropfenzahl > 0) {
    double dotx = Math.random();
    double doty = Math.random();

    if (dotx*dotx + doty*doty <= 1) {
      innerhalb++;
    } else {
    }

      tropfenzahl--;
  }

  pi = 4*(double)innerhalb/gesamt;
  return pi;
}
  public static void main(String[] arguments) {
    //Hier möchte ich die Methode aufrufen!!!
    System.out.println("Pi = " + pi + "");   //Hier soll die Ausgabe erfolgen!!!
  }
}

Kann mir bitte jemand helfen ich habe zwar ein Buch über Java, doch das hilft mir hier nicht weiter. Ich bin Anfänger mit Java und benutze den Java-Editor vom G. Röhner wenn das jemanden hilft.
Grüße
Felix
 
G

Gast2

Gast
Java:
double pi = approximiere_pi(1000);
System.out.println("PI = " + pi);
 

FranzM

Mitglied
Hi,

bitte schau dir mal die Java Namens konventionen an.

Die Ausgabe sollte wie folgt aussehen:

Java:
System.out.println("PI = " + approximiere_pi(tropfenzahl));

Da du aber in deinem main keine tropfenzahl hast, musst du da natürlich einint (vielen Dank) wert eigeben.

MfG Franz
 
Zuletzt bearbeitet:

Arthos

Mitglied
Beides funktioniert super!! Man habt ihr schnell reagiert!
:)
Ich werde es vielleicht versuchen bei Wikipedia anzumerken...
Ich werde dieses Thema als "erledigt" markieren.
 
W

Wishmaster51

Gast
Es gibt nichts anzumerken, der Artikel geht davon aus, dass der Leser grundliegende Java-Kenntnisse hat.
 

Arthos

Mitglied
Ich habe noch eine (zugegebenermaßen mikrige) GUI hinzugefügt. Doch brauche ich noch den Unicode für ≈ (U+2248)...
[c]System.out.println("PI #HIER: ≈# " + approximiere_pi(tropfenzahl_input_long));[/c]
Den muss man doch als \u... angeben oder?
Im Internet finde ich nur U+2248 aber das geht nicht. Auch aus den anderen Tabellen werde ich nicht schlau. :bahnhof:
Sorry ich eben noch ein ziemlicher Anfänger.
 

Camill

Bekanntes Mitglied
Ich habe noch eine (zugegebenermaßen mikrige) GUI hinzugefügt. Doch brauche ich noch den Unicode für ≈ (U+2248)...
[c]System.out.println("PI #HIER: ≈# " + approximiere_pi(tropfenzahl_input_long));[/c]
Den muss man doch als \u... angeben oder?
Im Internet finde ich nur U+2248 aber das geht nicht. Auch aus den anderen Tabellen werde ich nicht schlau. :bahnhof:
Sorry ich eben noch ein ziemlicher Anfänger.

Was geht nicht?
[c]\u2248[/c] sollte imho richtig sein.
 

Fant

Bekanntes Mitglied
Ich habe noch eine (zugegebenermaßen mikrige) GUI hinzugefügt. Doch brauche ich noch den Unicode für ≈ (U+2248)...
[c]System.out.println("PI #HIER: ≈# " + approximiere_pi(tropfenzahl_input_long));[/c]
Den muss man doch als \u... angeben oder?
Im Internet finde ich nur U+2248 aber das geht nicht. Auch aus den anderen Tabellen werde ich nicht schlau. :bahnhof:
Sorry ich eben noch ein ziemlicher Anfänger.


Java:
System.out.println("\u2248");
 

Arthos

Mitglied
Was geht nicht?
\u2248 sollte imho richtig sein.
Das funktioniert bei mir nicht!!!
Java:
System.out.println("Pi \u2248 " + approximiere_pi(tropfenzahl_input_als_long));
Die Ausgabe lautet dann: Pi ? 3,141... und nicht Pi ≈ 3,141...
 

Camill

Bekanntes Mitglied
Sofern du das Programm über die Windows Eingabeaufforderung startest wirst du auch nur ein '?' erhalten, diese arbeitet standardmäßig mit der Codepage 850.
 

Arthos

Mitglied
Sofern du das Programm über die Windows Eingabeaufforderung startest wirst du auch nur ein '?' erhalten, diese arbeitet standardmäßig mit der Codepage 850.

Ich habe in meinem ersten Post gesagt, dass ich den Java Editor von G. Röhner benutze. Dieser startet das Programm dann in der Eingabeaufforderung (cmd.exe). Somit hast du natürlich recht. Aber wie kann ich das umgehen? Muss ich eine GUI schreiben in dem es ein Ausgabe-Feld gibt?
 

Sesostris

Aktives Mitglied
Wenn du willst, dass wirklich überall ein ≈ erscheint, wäre eine eigene GUI tatsächlich die sauberste Lösung. Ob das den Aufwand rechtfertigt, musst du selbst entscheiden.
Wenn du willst, dass ein ≈ nur bei dir erscheint, reicht es, den Zeichensatz der Eingabeaufforderung auf UTF-8 umzustellen.
 

Arthos

Mitglied
Ob das den Aufwand rechtfertigt, musst du selbst entscheiden.

Das gesamte Programm ist nur dazu da Java zu lernen: Also ja, es ist der Aufwand wert! Die Frage ist nur wie das geht...aber ich schaffe das schon... :)

Das Programm so wie es jetzt ist:
Java:
class pi_gui {                                                        //klassendeklaration
  public static double approximiere_pi(long tropfenzahl) {           //algorhythmus von Wikipedia:kreiszahl:statistische ermittlung
    double pi = 0;
    long innerhalb = 0;
    long gesamt = tropfenzahl;
    
    while (tropfenzahl > 0) {
      double dotx = Math.random();
      double doty = Math.random();
      
      if (dotx*dotx + doty*doty <= 1) {
        innerhalb++;
      } else {
      }
      
      tropfenzahl--;
    }
    
    pi = 4*(double)innerhalb/gesamt;
    return pi;
  }                                                                //algorhythmus ende
  public static void main(String[] arguments) {                    //hauptmethode
    String tropfenzahl_input_string = javax.swing.JOptionPane.showInputDialog( "Wie viele Tropfen sollen regnen? (Nur Ziffern sind zulässig! Darf nicht leer Sein! Maximal: 1000000000)" );   //input durch benutzer
    long tropfenzahl_input_long = Long.valueOf(tropfenzahl_input_string).longValue();       //variablenumwandlung zeichen zu ziffern (string zu long)
    System.out.println("Pi \u2248 " + approximiere_pi(tropfenzahl_input_long));             //ausgabe und nutzung der methode
  }
}                                                                   //hauptmethode ende

Parallel dazu habe ich gerade noch das hier geschrieben, falls das jemanden interresiert...

Java:
public class pascalsche_dreieck_gui {
  public static void printPascal (int lines) {                 //methode von: [url=http://lufgi9.informatik.rwth-aachen.de/projekte/loop/aufgaben/markusb/schule/pascal_dreieck/lsg/Pascal.java.html]Pascalsches Dreieck, Lösung: Pascal.java[/url]
    int[][] array = new int [lines][lines];
    for (int i=0; i< lines; i++) {                            // Berechnung des Pascalschen Dreiecks
      for (int j=0; j <=i; j++) {
        if (j == 0 || j == i) {
          array[i][j] = 1;
        }
        else {
          array[i][j] = array[i-1][j-1] + array[i-1][j];
        }
      }
    }
    for (int i=0; i<lines; i++) {             //ausgabe-"methode"
      for (int j=0; j<=i; j++) {
        System.out.print (array[i][j] + " ");
      }
      System.out.println();
    }                                                             //methode ende
  }
  public static void main (String[] args){                //hauptprogramm
    String lines_als_string = javax.swing.JOptionPane.showInputDialog("Wie viele Zeilen des Pascalschen Dreiecks willst du ausrechnen?");   // Input Dialog
    int lines_als_int = Integer.parseInt(lines_als_string);                              //Variablenumwandlung
    printPascal (lines_als_int);                                                          //Ausgabe
  }
}

Es ist ein kleines Programm zur Berechnung einer Variablen länge des Pascalschen Dreiecks. Jedoch Wäre es auch hier gut das Ergebnis auf einer GUI anzuzeigen, da man es zentrieren müsste um es als wirkliches Hilfsmittel nutzen zu können.

[EDIT]Was haltet ihr davon?[/EDIT]
 
Zuletzt bearbeitet:

Fant

Bekanntes Mitglied
Du solltest dir direkt angewöhnen, dich an geltende Namenskonventionen zu halten. Siehe dazu z.B. hier: Code Conventions for the Java Programming Language: 9. Naming Conventions

Inhaltlich ist zu deinem neuen Programm ja nicht viel zu sagen. Jedoch finde ich die Mischung aus Eingabe über die grafische Oberfläche und Ausgabe über die Konsole etwas ungünstig. Entweder-oder sollte es da heißen.
Mit einer entsprechend Anzahl von Leerzeichen oder Tabs kannst du aber auch in der Konsole die Ausgabe "schön formatieren". Wenn du z.B. 5 Zeilen des Dreeicks zeichnen willst, dann setzt du z.B. vor die erste Zeile 4 Leerzeichen, vor die zweite 3 usw...

Gruß Fant
 

Robokopp

Bekanntes Mitglied
Hey, schau mal in der "Projekte" Sektion nach Monte Carlo Methode. Hab mal genau so etwas programmiert und hochgeladen

Edit: http://www.java-forum.org/showthread.php?t=135970 Monte-Carlo-Methode Simulator
 
Zuletzt bearbeitet:

Arthos

Mitglied
Hey, schau mal in der "Projekte" Sektion nach Monte Carlo Methode. Hab mal genau so etwas programmiert und hochgeladen

Edit: Monte-Carlo-Methode Simulator - java-forum.org

:shock::toll::applaus:

Ich würde für so etwas 10 Jahre brauchen...Wie lange saßt du denn da dran? Das Tool ist natürlich cool...dagegen ist meins etwas...naja...mikrig :D :pueh:
 

Robokopp

Bekanntes Mitglied
Ich hab das über zwei Tage verteilt gemacht und immer wieder ein paar Funktionen ergänzt :)aber effektive Arbeitszeit...kp
Vielleicht kann ich dich damit beruhigen, dass ich erst im Winter mit Java angefangen hab und noch garnicht so arg weit bin. Den Großteil hab ich durch Quaxis Tut gelernt (z.b. Wie man sinnvoll mehrere Objekte animiert/zeichnet)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
P iterative Berechnung Java Basics - Anfänger-Themen 9
1 Berechnung von PI mithilfe von Buffons Nadelproblem Java Basics - Anfänger-Themen 2
G Berechnung zwei Komplexen Zahlen Java Basics - Anfänger-Themen 34
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
K Annährende ganzzahlige Berechnung der Wurzel Java Basics - Anfänger-Themen 8
L Berechnung von Perioden Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
S Euklid Klasse mit Methoden zur Berechnung des ggT Java Basics - Anfänger-Themen 23
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
G Berechnung von N-Tageslinien von Aktienkursen Java Basics - Anfänger-Themen 13
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
G Einfache Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
W Schaltjahr Berechnung Java Basics - Anfänger-Themen 24
A Probleme mit Programm zur Pi-Berechnung Java Basics - Anfänger-Themen 6
X Temperatur-Berechnung /Array(?) Java Basics - Anfänger-Themen 5
L Berechnung Summe Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben