Methoden können nicht auf Instanzvariable der Klasse zugreifen

cookiedough

Mitglied
Hallo zusammen,

wie der Titel bereits verspricht ist es im folgenden Programmcode nicht möglich, dass Methoden auf die Instanzvariable der Klasse zugreifen.

[CODE lang="java" highlight="4.5"]public class MaxiMinimalwert_ermitteln {

// Die Methode kann nicht auf die Instanzvariablen (Zeile 4 und 5) zugreifen.
int zahlenstrang[] = {7, 5, 9, 2, 0, 10};
int max = zahlenstrang[0];
int min = zahlenstrang[0];

public static void main(String[] args) {
System.out.println("Max ist " + methodeMax());
System.out.println("Min ist " + methodeMin());
}


public static int methodeMax() {
for (int i = 0; i < zahlenstrang.length; i++) {
if (zahlenstrang > max) {
max = zahlenstrang;
}
}
return max;
}

public static int methodeMin() {
for (int i = 0; i < zahlenstrang.length; i++) {
if (zahlenstrang < min) {
min= zahlenstrang;
}
}
return min;
}
}
[/CODE]

Ich habe bereits probiert, die Instanzvariablen der Klasse in die Methode hineinzuschreiben. Dann funktioniert das Programm.

Wenn ich mehrere Methoden habe möchte ich die Instanzvariablen nicht jedesmal in die jeweilige Methode schreiben.

Könnt ihr mir bitte helfen und mitteilen was im Programmcode geändert werden muss, damit ich nur einal die Instanzvariablen habe und alle Methoden darauf zugreifen können.?
 
Zuletzt bearbeitet:
Das Problem ist, dass Deine Methoden beide static sind und die Variablen sind Instanzvariablen. Erstere existieren in der Klasse, letzte in der Instanz.
Eine Instanz deiner Klasse erzeugst Du aber nie.

Du kannst die Instanzvariablen zu klassenvariablen machen, d.h. auch dort ein static verwenden. Das entspricht aber in keiner Weise der objektorientierten Denkweise. Aber die ganze Aufgabenstellung / Lösung in in keine Weise objektorientiert, so dass da prinzipiell nichts dagegen spricht - außer eben, dass man dies später so auf keinen Fall machen sollte.

Die andere Möglichkeit wäre, dass Du eine Instanz Deiner Klasse erzeugst. Das wäre dann z.B. etwas wie:
[CODE lang="java" highlight="8,9,12"]public class Maximalwert_ermitteln {

// Die Methode kann nciht auf die Instanzvariablen (Zeile 4 und 5) zugreifen.
int zahlenstrang[] = {7, 5, 9, 2, 0, 10};
int max = zahlenstrang[0];

public static void main(String[] args) {
Maximalwert_ermitteln maxWertErmitteln = new Maximalwert_ermitteln();
System.out.println("Max ist " + maxWertErmitteln.methodeMax());
}

public int methodeMax() {
for (int i = 0; i < zahlenstrang.length; i++) {
if (zahlenstrang > max) {
max = zahlenstrang;
}
}
return max;
}
}[/CODE]

Und dann ggf. die Namenskonventionen beachten. Da sollte man keine _ haben. Statt dessen wäre das eher ein Name wie MaximalwertEmitteln - das nennt sich dann PascalCase.
 
Ja, die Begriffe gibt es beide. Wie man es nennt, ist relativ egal und da man auf beide Begriffe stößt, sollte man durchaus beide einordnen können.

Aber es freut mich, dass ich Dir weiter helfen konnte.
 

Zurück
Oben