Programm funktioniert nicht

Sandy.Ritz

Mitglied
Java:
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
 
Zuletzt bearbeitet von einem Moderator:
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.

P.S. Dein Code ist nicht besonders elegant ;-)
 
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()));
	}
}

Die Formatierte Ausgabe wäre dann :

Code:
125,66
1256,64
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben