Methode kann auf ArrayListe nicht zugreifen!

Bitte aktiviere JavaScript!
Hey,

Ich habe in meiner MainMethode eine ArrayList deklariert.
Nun soll ich eine Methode schreiben, welche die boolean Werte der Objekte in jener ArrayList abfragt.
Problem ist, dass die Liste innerhalb dieser neuen Methode nicht auffindbar ist. "liste cannot be resolved".
Wieso funktioniert das so nicht?
 
A

Anzeige




Vielleicht hilft dir unser Java-Tutorial hier weiter —> (hier klicken)
Eine Methode kann auf Variablen, die innerhalb einer anderen Methode deklariert sind, nicht zugreifen.
Du musst die ArrayList entweder als Feld in einer Klasse deklarieren, auf die beide Methoden Zugriff haben, oder du übergibst die ArrayList als Parameter.
Es wäre auf jeden Fall hilfreich, den Code zu sehen.
 
Eine Methode kann auf Variablen, die innerhalb einer anderen Methode deklariert sind, nicht zugreifen.
Du musst die ArrayList entweder als Feld in einer Klasse deklarieren, auf die beide Methoden Zugriff haben, oder du übergibst die ArrayList als Parameter.
Es wäre auf jeden Fall hilfreich, den Code zu sehen.
Java:
[/B]
public class SecuritySystem {

public static void main(String[] args) {

ArrayList<Door> liste = new ArrayList();
    liste.add(new Door(1, true));
    liste.add(new Door(2, false));
    liste.add(new Door(3, false));
    liste.add(new Door(4, true));

}      
public void checkDoors() {
        for (int i = 0; i< liste.size(); i++) {
            System.out.println(liste.get(i).islocked); // islocked gibt mir den Status wieder
        }
   }
}     
[B]
 
Wie bereits gesagt, entweder:
- die Liste als Feld in z.B. der Klasse SecuritySystem deklarieren; oder
- die Methode checkDoors mit der Liste als Parameter aufrufen (es ist allerdings unklar, wann und durch wen die Methode checkDoors aufgerufen wird)
Zusätzlich ist die Methode checkDoors eine Instanzmethode und die main-Methode eine statische Klassenmethode. Du bräuchtest also wahrscheinlich erstmal eine Instanz der SecuritySystem-Klasse oder machst die checkDoors Methode ebenfalls statisch.
 
Danke, hat mir echt geholfen. Nur leider ist daraus ein weiteres Problem resultiert:

Java:
[/B]
[B]
public class SecuritySystem {

public static ArrayList<Door> liste = new ArrayList();

public static void main([URL='http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+string']String[/URL][] args) {


    liste.add(new Door(1, true));
    liste.add(new Door(2, false));
    liste.add(new Door(3, false));
    liste.add(new Door(4, true));

}     
public static void checkDoors() {
        for (int i = 0; i< liste.size(); i++) {
            System.out.println(liste.get(i).isLocked()); // islocked gibt mir den Status wieder

        }
   }[/B]
public static void activateFirealarm() { 
        for (int i = 0; liste.size(); i++) { //Fehlermeldung : Type mismatch: cannot convert from int to boolean
            liste.get(i).setLocked(false);
            System.out.println("Die Tür des Raumes Nr. " + liste.get(i).getRoomNumber() + "wurde aufgrund eines Feueralarms entriegelt!");
        }
        Alarm Alarm1 = new Alarm();
        Alarm1.turnOn();
        System.out.println("Der Feueralarm wurde aktiviert!");
        System.out.println("Feueralarm: " + Alarm1.getStatus() + "\n"); 
    }

}   

[B]
 
Zuletzt bearbeitet:
Witzigerweise scheinst du ja noch nicht einmal in der Lage zu sein, deinen eigenen Code zu lesen...
Java:
...
public static void checkDoors() {
        for (int i = 0; i< liste.size(); i++) { // <-- richtig
            System.out.println(liste.get(i).isLocked()); // islocked gibt mir den Status wieder
        }
   }
public static void activateFirealarm() {
        for (int i = 0; liste.size(); i++) { // <-- FALSCH! Aber wieso?
            liste.get(i).setLocked(false);
...
5 Zeilen über deinem Fehler hast du es (per for-Loop über eine Liste iterieren) ja bereits richtig gemacht.
 
A

Anzeige




Du möchtest Python lernen? Dann sichere dir hier alle wichtigen Grundlagen.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben