publicstaticdoubleapproximiere_pi(int tropfenzahl){double pi =0;int innerhalb =0;int gesamt = tropfenzahl;while(tropfenzahl >0){// generiere Tropfen und addiere je nach Zugehörigkeitdouble 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 {publicstaticdoubleapproximiere_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;}publicstaticvoidmain(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
Beides funktioniert super!! Man habt ihr schnell reagiert!
Ich werde es vielleicht versuchen bei Wikipedia anzumerken...
Ich werde dieses Thema als "erledigt" markieren.
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.
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.
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.
Sofern du das Programm über die Windows Eingabeaufforderung startest wirst du auch nur ein '?' erhalten, diese arbeitet standardmäßig mit der Codepage 850.
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?
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.
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 {//klassendeklarationpublicstaticdoubleapproximiere_pi(long tropfenzahl){//algorhythmus von Wikipedia:kreiszahl:statistische ermittlungdouble 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 endepublicstaticvoidmain(String[] arguments){//hauptmethodeString 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 benutzerlong 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...
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.
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...
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)