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 sem.informatik.lernen;
public class Uebung {
public static void main(String[]args){
Kreis berechnungen = new Kreis(10);
berechnungen.radius = 10.0;
System.out.println(berechnungen.flaeche);
System.out.println(berechnungen.umfang);
}
}
public class Kreis {
double radius;
static double pi = 3.142;
double umfang = 2*pi*radius;
double flaeche=pi*radius*radius;
double getRadius(){
return radius;
}
void setRadius(double radius){
this.radius=radius;
}
double getUmfang(){
return umfang;
}
void setUmfang(double umfang){
this.umfang=umfang;
}
double flaeche(){
return flaeche;
}
void setFlaeche(double flaeche){
this.flaeche=flaeche;
}
Kreis(double welcherRadius){
this.radius=welcherRadius;
}
}
das ist hier bestimmt falsch dargestellt aber ich weiß nicht wie man es hier richtig darstellt.
mein problem ist, dass ich egal welchen radius ich eingebe als ergebnis für den umfang und die fläche immer nur 0 bekomme und nicht verstehe was ich fasch gemacht habe.
vielen dank für eure hilfe
Verschiebe mal die Zeilen 21 und 22 (zumindest die Berechnungen, die Variablen müssen ja Instanzvariablen bleiben) in den Konstruktor (also nach Zeile 43). Dann sollte/könnte es schon funktionieren.
Dein Problem liegt darin, dass deine Berechnung nur 1x ausgeführt wird und zwar wenn deine Instanzvariablen initialisiert werden.
Zu diesem Zeitpunkt ist der Radius aber noch 0, daher gibt es auch keinen Umfang und keine Fläche ==> 0.
Du solltest eine eigene Methode (in der Klasse Kreis) schreiben welche die Berechnung von Umfang und Fläche durchführt.
Im Konstruktor rufst du diese Methode auf.
Das ganze sollte in etwa in so eine Richung gehen :
Selbstverständlich kannst du auch Felder für Umfang und Fläche definieren.
Java:
public class Circle{
public final static double PI = Math.PI;
private double radius;
public Circle(final int radius){
this.radius = radius;
}
public double getScale(){
return 2 * PI * radius;
}
public double getArea(){
return PI * Math.pow(radius, 2);
}
public static void main(String[] args){
Circle c = new Circle(20);
System.out.println(String.format("%.2f", c.getScale()));
System.out.println(String.format("%.2f", c.getArea()));
}
}