Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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.
[/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]
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.