Hallo, sitze seit längerem jetzt an einem Codeteil aus einem Scrabble-artigem Programm welches ich programmiert habe.
Es hat einen kleinen Fehler den ich nicht weg bekomme und zwar im folgenem Abschnitt:
Da es ja nur ein kleiner Teil eines schon über 600 Zeilen großen Programms ist hier eine kleine Erklärung:
also filteredWords ist eine Arrayliste aus Wörtern, jedes Wort hat einen String text, einen Int value, int XLetter und int YLetter.
das sind die wichtigen sachen für diesen Abschnitt.
Die Wörter aus der Liste sollen dann nach hinzufügen von X und Y in die Liste avaiableWords geaddet werden.
X und Y Letter bedeutet wo der buchstabe liegt an dem angelegt werden soll.
an sich funktioniert alles, nur dass er wenn der Text der Wörter gleich ist, also ein Wort an mehreren Stellen angelegt werden könnte, irgendwie den X und Y (bzw i und j) nicht übernimmt oder besser gesagt überschreibt.
also wenn in der unteren For schleife eine Ausgabe mache vom item Text und X und Y dann gibt er es mir richtig wieder.
wenn ich aber nach der ganzen schleife die avaiableWords ausgeben lasse dann hat er bei item wo der gleiche text drinen steht auch gleiche X und Y werte, und zwar immer vom letzten geaddetem item.
beispiel:
er findet im ganzen Druchlauf durch die for-schleifen 4 Wörter die er legen könnte:
ab mit X=6 Y=5
lampe mit X=7 y=5
lampe mit X=9 y=6
lampe mit X=11 Y=9
das ist ungefähr ein reales Beispiel wo bei mir der Fehler auftrat, wenn ich die Werte hinter avaiableWords.add(item); von item ausgeben lasse kommt es richtig raus.
nachdem die items in die avaiableWords liste geaddet wurden udn ich diese später ausgeben lasse mit den Werten kommt dann folgendes:
ab mit X=6 Y=5
lampe mit X=11 y=9
lampe mit X=11 y=9
lampe mit X=11 Y=9
deswegen checkt er später dann nur ein einer position ob lampe gelegt werden kann und wenns an der Stelle nicht geht bricht er ab obwohl an er eigentlich an einer der anderen Stellen legen könnte.
so hoffe es ist klar geworden was ich will und ich hoffe mir kann jemand helfen.
Es hat einen kleinen Fehler den ich nicht weg bekomme und zwar im folgenem Abschnitt:
Java:
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 12; j++) {
if (!playingField[i][j].isEmpty()) {
filteredWords = getAvaiableList(playingField[i][j].getText());
filteredWords = filterList(filteredWords);
for (Word item : filteredWords) {
item.setXLetter(j);
item.setYLetter(i);
avaiableWords.add(item);
}
.......
Da es ja nur ein kleiner Teil eines schon über 600 Zeilen großen Programms ist hier eine kleine Erklärung:
also filteredWords ist eine Arrayliste aus Wörtern, jedes Wort hat einen String text, einen Int value, int XLetter und int YLetter.
das sind die wichtigen sachen für diesen Abschnitt.
Die Wörter aus der Liste sollen dann nach hinzufügen von X und Y in die Liste avaiableWords geaddet werden.
X und Y Letter bedeutet wo der buchstabe liegt an dem angelegt werden soll.
an sich funktioniert alles, nur dass er wenn der Text der Wörter gleich ist, also ein Wort an mehreren Stellen angelegt werden könnte, irgendwie den X und Y (bzw i und j) nicht übernimmt oder besser gesagt überschreibt.
also wenn in der unteren For schleife eine Ausgabe mache vom item Text und X und Y dann gibt er es mir richtig wieder.
wenn ich aber nach der ganzen schleife die avaiableWords ausgeben lasse dann hat er bei item wo der gleiche text drinen steht auch gleiche X und Y werte, und zwar immer vom letzten geaddetem item.
beispiel:
er findet im ganzen Druchlauf durch die for-schleifen 4 Wörter die er legen könnte:
ab mit X=6 Y=5
lampe mit X=7 y=5
lampe mit X=9 y=6
lampe mit X=11 Y=9
das ist ungefähr ein reales Beispiel wo bei mir der Fehler auftrat, wenn ich die Werte hinter avaiableWords.add(item); von item ausgeben lasse kommt es richtig raus.
nachdem die items in die avaiableWords liste geaddet wurden udn ich diese später ausgeben lasse mit den Werten kommt dann folgendes:
ab mit X=6 Y=5
lampe mit X=11 y=9
lampe mit X=11 y=9
lampe mit X=11 Y=9
deswegen checkt er später dann nur ein einer position ob lampe gelegt werden kann und wenns an der Stelle nicht geht bricht er ab obwohl an er eigentlich an einer der anderen Stellen legen könnte.
so hoffe es ist klar geworden was ich will und ich hoffe mir kann jemand helfen.