Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Methothen und static (http://www.informatikerboard.de/board/thread.php?threadid=2325)


Geschrieben von gg_ am 02.06.2015 um 19:09:

  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);

}


}



Geschrieben von eulerscheZahl am 02.06.2015 um 20:38:

 

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);
	}
}


Forensoftware: Burning Board, entwickelt von WoltLab GmbH