Hilfe bei Pi

Gimi

Mitglied
[CODE lang="java" title="Pi"]import java.util.*;
public class Pi
{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);

System.out.println("Mit welchem Beispiel wollen sie rechnen?");
System.out.println("(1).Wallissche Produkt");
System.out.println("(2).Leibnitz Reihe");
System.out.println("(3).Formel von Kelallur Nilakantha Somayaji");
System.out.println("(4).Formel von Euler ");
char eingabeBeispiel = sc.next().charAt(0);

/*if (eingabeBeispiel =='1') {
System.out.println("Geben sie eine Zahl ein");
int eingabe = sc.nextInt();

double piHalbe = 1.0;
double j = 1.0;
for (double i = 1; i < eingabe; i++, j++) {
if (i % 2 == 0) {
piHalbe *= (j / (j + 1));

}else {
piHalbe *= ((j + 1) / j);
}
}
double k=2*piHalbe;
System.out.println("ergebnis:" + k);
}*/
/*if (eingabeBeispiel =='2') {
System.out.println("Geben sie eine Zahl ein");
int zahl = sc.nextInt();

double s = 1;
double ergebnis = 0;
for (int rechner = 1; rechner < zahl; rechner=rechner+2) {
ergebnis += s/rechner;
s = -s;
}
ergebnis = ergebnis * 4;
System.out.println("PI ist:" + ergebnis);
}*/

if (eingabeBeispiel =='3') {
System.out.println("Geben sie eine Zahl ein");
int eingabe = sc.nextInt();

double rechnung2 = 0;
double s = -4;
for (int rechner = 3; rechner < eingabe; rechner = rechner +2) {
int rechner2 = rechner;
double rechnung = (rechner2 * rechner2 *rechner2) - rechner2;
rechnung2 += s/rechnung;
s = -s;

double sZwei = 4;
double rechnungVier = 0;
for (int rechnerDrei = 5; rechnerDrei < eingabe; rechnerDrei = rechnerDrei +2) {
int rechnerVier = rechnerDrei;
int rechnungDrei = (rechnerVier^3) -rechnerVier;
rechnungVier += sZwei/rechnungDrei;

if (rechnung2 == rechnung2) {
double Loesung = rechnung2 + rechnungVier;
rechnung = -rechnung;
break;
}
else if (rechnung2 == -rechnung2) {
double Loesung = rechnung2 - rechnungVier;


System.out.println("PI=" + Loesung +3);
}
}
}
}


} } [/CODE]

Pi=3+4/3^3-3 - 4/5^3-5 + 4/7^3-7 - 4/9^3-9 +...

Ich verstehe nicht warum Beispiel "´3" nicht funktioniert.
Es soll am ende Pi rauskommen
 

temi

Top Contributor
Irgendwie bekomme ich Kopfschmerzen, wenn ich mir den Code anschaue: "rechner", "rechner2", "rechnung3", "rechner3"... Das ist ja schrecklich!

Kein Wunder, wenn bei den Variablennamen irgendwo ein Fehler passiert.
 

White_Fox

Top Contributor
Den finde ich auch nicht schlecht:

Java:
                    }
            }
        }
                }
           
   
        }            }

@TS:
Überarbeite deinen Code mal bitte. Vergib vernünftige und aussagenkräftige Bezeichnungen. Deklariere lieber eine Variable zuviel als zuwenig. Wenn du ein Integer nur am Anfang brauchst, ein weiteres Integer nur am Ende, beide aber für etwas anderes genutzt werden, dann deklariere zwei Integer und gib ihnen Namen, denen man ansieht wofür die Variable ist. Auch zwischendurch eine Funktion einzubauen um einen Bezeichner für den jeweiligen Arbeitsschritt zu haben ist immer gut.

Edit:
Wahrscheinlich findest du den Fehler dann auch von alleine.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Dann einfach einmal überlegen:
a) Was soll ^ in der Schreibweise der Rechnung bedeuten?
b) Was für eine Operation ist ^ in Java?

Und wenn Du da den Unterschied heraus gefunden hast, dann darfst Du schauen, wie Du die Operation aus a) in Java abbilden kannst ...
 

Blender3D

Top Contributor
Ich verstehe nicht warum Beispiel "´3" nicht funktioniert.
Es soll am ende Pi rauskommen
Teile den Code auf dann kannst Du dich nur mehr auf das eigentliche Problem konzentrieren.
Hier ein Beispiel für die Benutzereingabe. Deine Aufgabe ist es dann, die Berechnungen zu machen.
[CODE lang="java" title="Teile und Herrsche" highlight="7-17,40-43, 47-50,54-57,61-64,"]import java.util.Scanner;

public class TestPi {
private static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
printMenu();
int selected = inputRangedNumber("Bitte waehle eine Zahl: ", 1, 4);
int interationen = inputRangedNumber("Bitte gib die Anzahl der Schritte ein: ", 1, 1000000);
if (selected == 1)
piWallisscheProdukt(interationen);
if (selected == 2)
Leibnitz(interationen);
if (selected == 3)
Somayaji(interationen);
if (selected == 4)
piEuler(interationen);

}

private static int inputRangedNumber(String label, int min, int max) {
int val = 0;
boolean ok = false;
do {
System.out.print(label);
try {
val = Integer.parseInt(input.next());
if (val < min || val > max)
System.out.println("Bitte eine Zahl im Bereich [" + min + "-" + max + "] eingeben");
ok = true;
} catch (NumberFormatException e) {
System.out.println("Bitte eine ganze Zahl eingeben!");
}

} while (!ok);
return val;
}

private static double piWallisscheProdukt(int n) {
double value = 0;
System.out.println("WallisscheProdukt");
// TODO
return value;
}

private static double Leibnitz(int n) {
double value = 0;
System.out.println("Leibnitz");
// TODO
return value;
}

private static double Somayaji(int n) {
double value = 0;
System.out.println("Somayaji");
// TODO
return value;
}

private static double piEuler(int n) {
double value = 0;
System.out.println("Euler");
// TODO
return value;
}

private static void printMenu() {
System.out.println("Mit welchem Beispiel wollen sie rechnen?");
System.out.println("(1).Wallissche Produkt");
System.out.println("(2).Leibnitz Reihe");
System.out.println("(3).Formel von Kelallur Nilakantha Somayaji");
System.out.println("(4).Formel von Euler ");
}
}[/CODE]
 

M.L.

Top Contributor
[CODE lang="java" title="Pi"]

if (eingabeBeispiel =='3') {

int eingabe = sc.nextInt();

for (int __rechner = 3__; __rechner < eingabe__; rechner = rechner +2) {

for (int __rechnerDrei = 5__; __rechnerDrei < eingabe__; rechnerDrei = rechnerDrei +2) {
[/CODE]
Von den bereits angesprochenen Problemen mal abgesehen: woher weiss der Benutzer denn, WAS eingegeben werden darf ? Genau das scheint in den Bedingungen der for-Schleife(n) nämlich zum Problem zu werden...
 

Neue Themen


Oben