Cannot make a static reference to the non-static field

annequin

Mitglied
Hallo!

Ich bekomme diese Fehlermeldung: "Cannot make a static reference to the non-static field temperature"
Bei diesem Quellcode, der zur Berechnung der Druchschnittstemperatur dient:

Java:
public class wetterstation {
	
	int [] temperature = {12, 14, 9, 12, 15, 16, 15, 15, 11, 8, 13, 13, 15, 12};

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		int summe=0;
		
		for(int i=0; i < temperature.length; i++)
		{
			summe = summe + temperature[i];
		}
	
	int average = summe / temperature.length;

Sobald ich die Variable temperature in der Methode erstelle, gibt es keine Probleme, ich brauche die jedoch auch noch für weitere Methoden, eine lokale Variable nützt mir also nichts...
Wo liegt mein Fehler? Wieso kriege ich diese Fehlermeldung?

Beste Grüße
annequin
 
public static void main(String[] args)

Der Eintiegspunkt ist static. Und dein int[] temperature ist teil jedes Objektes wetterstation.
Entweder machst du temperature static oder du erstellt ein Objekt von wetterstation und verwendest das interne int[]
 
Hilfe......

Java:
public class wetterstation {
	
	int [] temperature = {12, 14, 9, 12, 15, 16, 15, 15, 11, 8, 13, 13, 15, 12};

	
	public void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		int summe=0;
		
		for(int i=0; i < temperature.length; i++)
		{
			summe = summe + temperature[i];
		}
	
	int average = summe / temperature.length;
	
	System.out.println("Die Durchschnittstemperatur beträgt " + average + "°C");
	}
	
	public void getMin()
	{
		int min = 0;
		
		for(int i = 0; i < temperature.length)
	}
	

}

Jetzt hakt es in Zeile 26, selber Fehler..... ich bin verwirrt :noe:
 
Da fehlen schließende und öffnende Klammer der for-Schleife.

Und
Java:
 for(int i=0; i < temperature.length; i++)
        {
            summe = summe + temperature[i];
        }

Wird so nicht compilieren, da temperature immer noch teil von einem Objekt ist.


Hier hast du mehrere Möglichkeiten:

Java:
    public class wetterstation {
       
        static int [] temperature = {12, 14, 9, 12, 15, 16, 15, 15, 11, 8, 13, 13, 15, 12};
     
        public void main(String[] args) {
            int summe=0;
            for(int i=0; i < temperature.length; i++)
            {
                summe = summe + temperature[i];
            }
            int average = summe / temperature.length;
            System.out.println("Die Durchschnittstemperatur beträgt " + average + "°C");
        }
    }

Java:
    public class wetterstation {
       
        int [] temperature = {12, 14, 9, 12, 15, 16, 15, 15, 11, 8, 13, 13, 15, 12};
     
        public void main(String[] args) {
            wetterstation w = new wetterstation();
            int summe=0;
            for(int i=0; i < w.temperature.length; i++)
            {
                summe = summe + w.temperature[i];
            }
            int average = summe / w.temperature.length;
            System.out.println("Die Durchschnittstemperatur beträgt " + average + "°C");
        }
    }

Oder, wenn man es schöner machen will:
Java:
public class Wetterstation
{
	private int[] temperature	= { 12, 14, 9, 12, 15, 16, 15, 15, 11, 8, 13, 13, 15, 12};

	public void main(String[] args)
	{
		Wetterstation w = new Wetterstation();
		w.printAverageTemperatur();
	}
	
	public void printAverageTemperatur()
	{
		int summe = 0;
		for (int i = 0; i < temperature.length; i++)
		{
			summe = summe + temperature[i];
		}
		
		int average = summe / temperature.length;
		System.out.println("Die Durchschnittstemperatur beträgt " + average + " °C");
	}
}
 
Zuletzt bearbeitet:
Schreib doch mal die Methode zu ende.... oder hast du hier nicht den ganzen Code geposted?
Wenn du die Schleife mal fertig stellen würdest sollte es auch wieder gehen.
 

Zurück
Oben