Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
package Hausaufgabe1;
public class BerechenAnwendung {
static double a;
static double P;
public static void main (String[]args){
int b;
b=3;
for(int a=0;a<=b;a++)
P += .....;
System.out.println(P);
}
}
Nun möchte ich in einer neuen Klasse eine do-while Schleife
Java:
package Hausaufgabe1;
public class Kreis {
double e;
e=Math.pow(1,-1);
do
while(Math.abs((java......)-P))>v)
}
Nun fehlt mir der Ansatz wie ich P aus der Main-Methode in diese Klasse ziehe und was ich dann bei do eintragen muss ...so das das Programm mir die Anzahl der Durchgänge nennt bis die Bedingung erfüllt ist ?????
Jetzt müllst du doch nicht ehrlich das Forum mit fast dem selben Thema nochmal zu, wobei di gegenüber deinem anderen Thema nichts verändert hast, was man dir angeraten hat (Stichwort geschweifte Klammern)...
Deine Klasse Kreis ist katastrophal, du solltest dir dringend nochmal die Grundlagen ansehen, Methoden, Klassen...
[EDIT][OT]Loser schreibt man übrigens mit nur einem O[/OT][/EDIT]
Habe meine Main Methode sehr verändert ...mir geht es jediglich um einen Ansatz.....von Main-Methode eine Formel in eine neue Klasse zu bekommen und diese dann in eine do-while Schleife unter einer gewissen Bedingung einzufügen
Solange du Kreis nicht in der Main verwendest, wirst du dort keinen Wert reinbringen.
Und wenn du Kreis in main instanziieren willst machst du einen Konstruktor, in dem kannst du übergeben, was du willst.
package Hausaufgabe1;
public class BerechenAnwendung {
static double a;
static double P;
public static void main (String[]args){
int b;
b=3;
for(int a=0;a<=b;a++)
P += (1 / Math.pow(16.0, a)) * ((4.0 / ((8.0 * a) + 1.0)) - (2.0 / ((8.0 * a) + 4.0)) - (1.0 / ((8.0 * a) + 5.0)) - (1.0 / ((8.0 * a) + 6.0)));
System.out.println(P);
KreiszahlP Pi = new KreiszahlP();
Pi.rechne();
}
}
Java:
package Hausaufgabe1;
public class KreiszahlP {
void rechne(P){
double v =Math.pow(1,-1);{
int a ;{
a=0;
while(Math.abs((java.lang.Math.PI)-P)>v){
System.out.println(P);
a++;
}
}
} }
hiermal eine syntaktische korrekte Form deines Codes...was auch immer sematisch dort passieren soll, ist mir noch schleierhaft, mal sehen ob ich das aus dem Thread erkennen kann^^
Java:
public class BerechenAnwendung {
static double a;
static double P;
public static void main(String[] args) {
int b;
b = 3;
KreiszahlP Pi = new KreiszahlP();
for (int a = 0; a <= b; a++) {
P += (1 / Math.pow(16.0, a))
* ((4.0 / ((8.0 * a) + 1.0)) - (2.0 / ((8.0 * a) + 4.0))
- (1.0 / ((8.0 * a) + 5.0)) - (1.0 / ((8.0 * a) + 6.0)));
System.out.println(P);
Pi.rechne(P);
}
}
}
class KreiszahlP {
int a = 0;
void rechne(double P) {
double v = Math.pow(1, -1);
while (Math.abs((java.lang.Math.PI) - P) > v) {
System.out.println(P);
a++;
}
}
}
Ich möchte halt die Formel P so oft anwenden bis die Differenz von Pi und P >v bleibt ......
und dann würde ich gerne wissen wieviele Durchgänge ich benötigte bzw. a um diesen Grenzwert zu erreichen...
ich bräuchte iwie eine zählende Variable ????
Ich möchte halt die Formel P so oft anwenden bis die Differenz von Pi und P >v bleibt ......
und dann würde ich gerne wissen wieviele Durchgänge ich benötigte bzw. a um diesen Grenzwert zu erreichen...
ich bräuchte iwie eine zählende Variable ????
1. In java kanst du keine "Formel" definieren. (bzw auf jeden Fall nicht so ). Was du gemacht hast ist eine einfache Zuweisung. Vorallem geht auch nicht, dass du P anhand eines "a" definierst, und in einer anderen Funktion auch ein a hast, und darauf hoffst, dass du P anhand dieses neuen "a"'s neu berechnen kannst. Dazu bräuchtest du keine Zuweisung (was du mit P = .... gemacht hast), sondern eine Funktion.
2. Solltest du dir wirklich ernsthaft mit Klassen, Methoden, Variablen und ihre Gültigkeitsbereiche, etc.. nochmal auseinandersetzten.
An sonsten wäre das meine "Idee" was du gemeint haben könntest:
Java:
public static void main(String[] args) {
int a;
double P = 0;
int stellen = 10;
double v = 1 / Math.pow(10, stellen);
for (a = 0; Math.abs((java.lang.Math.PI) - P) > v; a++) {
P += rechne(a);
System.out.println("Pi: " + P);
}
System.out.println("a: " + a);
}
private static double rechne(int a) {
return (1 / Math.pow(16.0, a))
* ((4.0 / ((8.0 * a) + 1.0)) - (2.0 / ((8.0 * a) + 4.0))
- (1.0 / ((8.0 * a) + 5.0)) - (1.0 / ((8.0 * a) + 6.0)));
}
1. Deklariert du 2-mal a. Das macht die Übersichtlichkeit nicht besser und wird dir bei anderen Sprachen auf die Füsse fallen
2. Normalerweise verwendet man für Schleifenzähler im Allgemeinen i(,j,k), ist zwar nicht zwingend, wird aber so gelehrt
3. Darf eine Klassenvariable gerne eine Bezeichnung tragen, die etwas mehr darüber aussagt, wofür diese gedacht ist.