variable in anderer funktion aufrufen

maxe

Mitglied
public static void methode1(){
int x = 1;
int y = 2;
}
public static void methode2(){
int z = x + y
//hier sollen x und y aus der methode1 aufgerufen werden
System.out.println(z);
}
public static void main(String[] args) {
methode2();
}
 
Die Antwort ist einfach: Du kannst aus einer Methode nicht auf die lokalen Variablen einer anderen Methode zugreifen.

Wenn Du mit irgendwelchen Werten etwas machen willst, dann musst Du diese so speichern, dass diese zugreifbar sind. Dazu kann man z.B. Klassen- und Instanzvariablen verwenden.
 
Die Antwort ist einfach: Du kannst aus einer Methode nicht auf die lokalen Variablen einer anderen Methode zugreifen.

Wenn Du mit irgendwelchen Werten etwas machen willst, dann musst Du diese so speichern, dass diese zugreifbar sind. Dazu kann man z.B. Klassen- und Instanzvariablen verwenden.
danke für die Antwort. Kannst du dennoch kurz ein Beispiel erstellen um zu zeigen wie es praktisch funktioniert? VG
 
Statische Variablen, auf die zwei Methoden zugreifen:

Java:
public class Beispiel {
    static int x, y;
    
    static void setValues() {
        x = 1;
        y = 2;
    }
    
    static int addValues() {
        return x + y;
    }
}
 
Und wenn es nicht-statisch und objektorientiert sein soll, o wie es Konrad immer gerne predigt:

Code:
public class Beispiel {
    int x, y;

    public static void main(String[] args){
        Beispiel test=new Beispiel();
        setValues();
        System.out.println(addValues());
    }
    
    public void setValues() {
        x = 1;
        y = 2;
    }
    
    public int addValues() {
        return x + y;
    }
}

main ist hier die einzige statische Methode (muss sie auch sein!) und erzeugt ein objekt der Beispielklasse, mit dem du die Methoden der KKlasse dann benutzen kannst.

Wobei das vielleicht noch etwas zu kompliziert für deinen aktuellen Stand ist, aber früher oder später ist das die von konrad hochgelobte objektorientierte Variante.
 
Da nur aufpassen - die Instanzmethoden müssen dann auch auf der Instanz aufgerufen werden (vermutlich einfach nur der typische Fehler, wenn man Code im Forum schreibt bzw. copy&paste nutzt - wie es auch mir regelmäßig passiert):

Java:
    public static void main(String[] args){
        Beispiel test=new Beispiel();
        test.setValues();
        System.out.println(test.addValues());
    }

In den Zeilen 3 und 4 jeweils das "test."

Aber ansonsten natürlich ein guter und richtiger Beitrag!
 
Wenn Du mit irgendwelchen Werten etwas machen willst, dann musst Du diese so speichern, dass diese zugreifbar sind.
Oder die Werte der Methode z. B. als Parameter bekannt machen...
Java:
public class Beispiel {

    public static void main(String[] args){
        
        Beispiel test=new Beispiel();
        int someX = 4;
        int someY = 5;       
        System.out.println(test.addValues(someX, someY));
    }
 
    public int addValues(int x, int y) {
        return x + y;
    }
}
 
Wichtiger als das "wie" wäre meiner Meinung nach hier erst mal das "warum".

Handelt es sich um so was wie einen Zähler für die Klasse unabhängig von der Instanz? Static
Oder gar eine Konstante? final static
Eine Eigenschaft des Objekts, in dem sich die Methode befindet? nicht static

Die Vorgehensweise hängt stark davon ab, wozu die Variable dient, bzw. ob und wo sie irgendwo dazugehört.
Die technische Umsetzung ergibt sich dann von selbst.

Wenn eine Variable lokal in einer anderen Methode erstellt wird, dann heißt das doch, dass sie laut Design nur dort gebraucht wird.
Ansonsten würde man sie nicht dort erstellen, sondern als Klassenvariable des Objekts, dessen Eigenschaft sie ist.
 
Meine random Vermutung wäre einfahc mal dass der Threadersteller das Thema Klassen und so noch gar nicht hatte, bisher jeden Code in der Main methode direkt ausgeführt hat und nun in der main Methode ne Variable definiert hat, mit der gern auch in anderen MEthoden gearbeitet hätte.
Vermute ich mal so.

Lösung ist halt dann eine Klasse mit statischen oder auch nichtstatischen Methoden und Attributen.

@KonradN Hast natürlich völlig recht, solche offensichtlichen Patzer passieren wenn man im Webseiteneditor schnell was zusammenbauen will 🙂
 

Neue Themen


Zurück
Oben