Methode kann auf ArrayListe nicht zugreifen!

Diskutiere Methode kann auf ArrayListe nicht zugreifen! im Java Basics - Anfänger-Themen Forum; Hey, Ich habe in meiner MainMethode eine ArrayList deklariert. Nun soll ich eine Methode schreiben, welche die boolean Werte der Objekte in...

  1. xrakuzan1
    xrakuzan1 Neues Mitglied
    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?
     
  2. Wenn du jetzt Java lernen möchtest, dann sichere dir hier unseren Java-Videokurs heute zum Sonderpreis (hier klicken!)
  3. httpdigest
    httpdigest Bekanntes Mitglied
    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.
     
    cleanairs gefällt das.
  4. xrakuzan1
    xrakuzan1 Neues Mitglied
    Code (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]
     
  5. httpdigest
    httpdigest Bekanntes Mitglied
    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.
     
  6. mihe7
    mihe7 Bekanntes Mitglied
    Wobei ich für ersteres plädiere :D
     
  7. xrakuzan1
    xrakuzan1 Neues Mitglied
    Danke, hat mir echt geholfen. Nur leider ist daraus ein weiteres Problem resultiert:

    Code (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: 17. März 2019 um 20:20 Uhr
  8. httpdigest
    httpdigest Bekanntes Mitglied
  9. xrakuzan1
    xrakuzan1 Neues Mitglied
  10. httpdigest
    httpdigest Bekanntes Mitglied
    Ich denke, ich habe dir gerade die Lösung mehrfach präsentiert.
     
  11. httpdigest
    httpdigest Bekanntes Mitglied
    Witzigerweise scheinst du ja noch nicht einmal in der Lage zu sein, deinen eigenen Code zu lesen...
    Code (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.
     
    mihe7 und xrakuzan1 gefällt das.
Passende Stellenanzeigen aus deiner Region:





Die Seite wird geladen...

Methode kann auf ArrayListe nicht zugreifen! - Ähnliche Themen

Wie kann ich ein int[] Array in einer Methode benutzen?
Wie kann ich ein int[] Array in einer Methode benutzen? im Forum Allgemeine Java-Themen
Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen?
Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? im Forum Allgemeine Java-Themen
JaveEditor - Wie kann ich Methodenbeschreibung zur Verfügung stellen
JaveEditor - Wie kann ich Methodenbeschreibung zur Verfügung stellen im Forum Java Basics - Anfänger-Themen
Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren?
Wie kann ich eine Methode einer selbst erstellten Klasse statisch importieren? im Forum Java Basics - Anfänger-Themen
Kann das so gehen? (Methode)
Kann das so gehen? (Methode) im Forum Java Basics - Anfänger-Themen
Thema: Methode kann auf ArrayListe nicht zugreifen!