Methothen und static

Neue Frage »

Auf diesen Beitrag antworten »
gg_ Methothen und static

Meine Frage:
Hallo allerseits,

ich habe versucht ein Programm zu schreiben die die Fläche eines Kreise brechnet.
Es wird mit dem Scanner der Radius gegeben. Mein Problem ist das Programm zeigt mir eine Fehlermeldung die da lautet das der Attribut radius als static deklariert werden muss. Warum muss es denn als static deklariert werden.
Ich verstehe es noch nicht so ganz genau was der unterschied zwischen Instanzmethode und Klassenmethode?

für jede hilfreiche Antwort wäre ich sehr dankbar smile















Meine Ideen:
import java.util.Scanner;


public class flacheKreis {

static int radius;
double flache;

public static void main(String[] args) {

menue();

flacheKreis f = new flacheKreis();
f.berechneFlache(radius);


}

public static void menue(){

Scanner scan = new Scanner(System.in);
System.out.println("Geben Sie ein Radius :");
radius = scan.nextInt();

System.out.println("Der Radius ist :"+ radius);

}

public void berechneFlache(int radius){

flache = (double) (radius * radius * Math.PI);
System.out.println("Die Fläche beträgt: " + flache);

}


}
 
Auf diesen Beitrag antworten »
eulerscheZahl

Eine statische Variable wird von allen Instanzen der Klasse geteilt. Das ist z.B. für einen Zähler sinnvoll, der angibt, wie viele Instanzen existieren.
In einer statischen Methode kannst du logischerweise nur auf statische Variablen zugreifen, da die Methode ja keiner Instanz zugeordnet ist.

Du kannst also die Methode menue nicht-static machen:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public class FlacheKreis { //Klassennamen schreibt man groß

	int radius;
	double flache;

	public static void main(String[] args) {
		flacheKreis f = new flacheKreis();
		f.menue();
		f.berechneFlache();
	}

	public void menue() {
		Scanner scan = new Scanner(System.in);
		System.out.println("Geben Sie ein Radius :");
		radius = scan.nextInt();
		System.out.println("Der Radius ist :" + radius);
	}

	public void berechneFlache() {
		flache = (double) (radius * radius * Math.PI);
		System.out.println("Die Fläche beträgt: " + flache);
	}
}
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »