nicht-statische Variablen x verwiesen werden kann aus einem statischen Kontext
Entschuldigen Sie meine Unwissenheit. Ich bin ein Anfänger:
Warum ist der folgende code gibt mir die folgende kompilieren Fehler?
[Zeile: 16] non-static variable x wird verwiesen werden kann nicht aus einem statischen Kontext
public class average{
int [] numbers = {2,3,4,5,6};
double x = averageMark(numbers);
public static double averageMark(int [] numbers){
int sum = 0;
double average = 0.000;
for (int i = 0; i < numbers.length; i++){
sum = numbers [i] + sum;
average = sum/numbers.length;
}
return average;
}
public static void main (String [] args){
System.out.println(x);
}
}
System.out.println(new average().x);
=> Sie müssen eine Instanz der Durchschnitt.- Das klappt perfekt. Darf ich Fragen, warum dies der Fall ist?
- Auch in diesem Fall bin ich den Zugriff auf das richtige Feld? Wie greife ich auf die Methode?
- siehe dieses tutorial: docs.oracle.com/javase/tutorial/java/javaOO/objects.html.
- Vielen Dank dafür, gelesen wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der Fehler sagt alles
müssen Sie entweder machen es
x
statische variable.oder erstellen Sie eine Instanz der Durchschnitt und darauf zugreifen.
Btw, es ist eine Konvention, die Ihrem Klassennamen beginnen mit Großbuchstaben.
als @ mgaert vermerkt, die Sie brauchen, um zahlen-array statisch als auch, weil Sie es in einer statischen Methode.
Statische Methode oder eine variable ist nicht an ein bestimmtes Objekt, sondern auf die Klasse als ganzes. Sie werden zugewiesen, wenn die Klasse geladen wird. Wenn Sie versuchen, eine Instanz-variable innerhalb einer statischen Methode, der compiler denkt, "ich weiß nicht, welche Objekt-Instanz variable, die du redest!"
Aber wenn Sie erstellen Sie eine neue Instanz von
average
Klasse, Sie werden in der Lage sein Zugriff auf diese Instanz, so ändern Sie diese wie folgt: