Hallo,
für ein Programm zum Erstellen und Lösen von Str8ts habe ich ein zweidimensionales Array "str8tsFld" definiert.
Ein solches Str8ts-Feld ist damit in je 9 Zeilen und Spalten unterteilt. Zu diesen 18 Bereichen kommen noch eine variable Anzahl von unterschiedlich großen Teilbereichen der Zeilen bzw. Spalten, die soganannten Str8ts. Jede Str8t kann über die Klasse STR8 beschrieben werden.
Alle Str8ts werden in der Liste "strList" zusammengefasst. Über diese Liste werden die verschiedenen Auswertemethoden aufgerufen. In den Methoden werden nun aus der Angabe zur ersten und letzten Zelle einer Str8t auch die dazwischen liegenden Zellen festgestellt und für jede Zelle ein Listeneintrag angelegt, über den die Informationen zu jeder Zelle abgefragt werden können.
Nun mein Problem: In der Liste der einzelnen Zellen wird durch die Zuweisung der Zellwert und nicht eine Referenz auf die Zelle selbst übernommen. Das bedeutet also, über einen solchen Listeneintrag kann ich zwar dessen Wert verändern. Damit verändere ich aber nicht den Wert im Str8ts-Rasterfeld. Soll der Wert direkt an der "Quelle" verändert werden, muss dies über eine direkte "Ansprache" erfolgen.
Meine Frage: Wie kann ich in der Liste der einzelnen Zellen an Stelle der Zellinhalte eine Referenz auf die jeweilige Zelle selbst aufnehmen?
Hier einige Codeschnipsel zum Verständnis meines Problems:
MfG, kodela
für ein Programm zum Erstellen und Lösen von Str8ts habe ich ein zweidimensionales Array "str8tsFld" definiert.
Ein solches Str8ts-Feld ist damit in je 9 Zeilen und Spalten unterteilt. Zu diesen 18 Bereichen kommen noch eine variable Anzahl von unterschiedlich großen Teilbereichen der Zeilen bzw. Spalten, die soganannten Str8ts. Jede Str8t kann über die Klasse STR8 beschrieben werden.
Alle Str8ts werden in der Liste "strList" zusammengefasst. Über diese Liste werden die verschiedenen Auswertemethoden aufgerufen. In den Methoden werden nun aus der Angabe zur ersten und letzten Zelle einer Str8t auch die dazwischen liegenden Zellen festgestellt und für jede Zelle ein Listeneintrag angelegt, über den die Informationen zu jeder Zelle abgefragt werden können.
Nun mein Problem: In der Liste der einzelnen Zellen wird durch die Zuweisung der Zellwert und nicht eine Referenz auf die Zelle selbst übernommen. Das bedeutet also, über einen solchen Listeneintrag kann ich zwar dessen Wert verändern. Damit verändere ich aber nicht den Wert im Str8ts-Rasterfeld. Soll der Wert direkt an der "Quelle" verändert werden, muss dies über eine direkte "Ansprache" erfolgen.
Meine Frage: Wie kann ich in der Liste der einzelnen Zellen an Stelle der Zellinhalte eine Referenz auf die jeweilige Zelle selbst aufnehmen?
Hier einige Codeschnipsel zum Verständnis meines Problems:
Java:
// Instanzieren des Str8ts-Rasters, der Str8ts-Liste und der Werteliste
private final int[][] str8tsFld = new int[9][9];
private final STR8[] strList = new STR8[50]
private final int[] zellWert = new int[9];
// Beispiel einer Wertzuweisung innerhalb einer Methode:
wrt[0] = str8tsFld[str8t.ersteZelle.zl][str8t.ersteZelle.sp];
// Beispiel für eine Zuweisung
str8tsFld[str8t.letzteZelle.zl][str8t.letzteZelle.sp] = mKnd;
str8tsFld[str8t.letzteZelle.zl][str8t.letzteZelle.sp] |= lwFlag;
str8tsFld[str8t.letzteZelle.zl][str8t.letzteZelle.sp] |= n2;
/**
* Klasse für die Definition der Position einer Zelle im Str8t-Raster
*/
private class ZELLPOS {
int zeile;
int spalte;
}
/**
* Klasse für die Definition einer Str8t durch die Positionsangabe
* der jeweils ersten und letzten Zelle der Str8t, deren Länge und
* der Angabe, ob alle Zellen der Str8t gelöst sind
*/
private class STR8 {
ZELLPOS ersteZelle = null;
ZELLPOS letzteZelle = null;
int len = 0;
boolean geloest = false;
// Konstruktor
public STR8() {
this.ersteZelle = new ZELLPOS();
this.letzteZelle = new ZELLPOS();
}
}