[Javalist] tomb hiba
István Székely
istvan.szekely at i-logic.hu
2013. Már. 11., H, 13:01:17 CET
Sziasztok!
Azért ne feledkezzünk meg arról az apróságról, hogy az Integer
immutable, az Ertek meg nem (mint látjuk). Elég lényeges különbség abból
a szempontból, hogy ez a verzió működhet, amikor egy [x,y] értéket
megváltoztatsz, az eredeti verzió meg nem.
Ahogy mások már megírták, deep clone és hasonlók lehet a megoldás a te
esetedben.
Üdv,
Stivi
On 2013-03-10 23:28, coder at gmail.hu wrote:
>
> How about this approach?
>
> // A 9 egy magic number...
> public class Board {
>
> private final Integer[][] values = new Integer[9][9];
>
> public void setValue(int x, int y, Integer value) {
> values[x][y] = value;
> }
>
> public Integer getValue(int x, int y) {
> return values[x][y];
> }
>
> public Board clone() {
> Board copy = new Board();
> for (int x = 0; i < 9; i++) {
> copy.setValue(x, y, values[x][y]);
> }
> }
> }
>
> Próbáld meg refaktorálni egy kicsit a kódot, hátha segít. Jómagam
> legalábbis preferálni szoktam a minél kisebb, könnyen menedzselhető
> darabokat; általában könnyebb is úgy adott problémákra megoldást találni.
>
> Üdv.: Bence
>
> On Sun, 10 Mar 2013 20:11:18 +0200, Bara Zoltan wrote:
>
>> Sziasztok
>>
>> Van itt egy jelenseg amit nem ertek tabla erteket elmentenem
>> tablaTemp-be majd valtoztatom
>> a tablat es vissza kene tolteni az eredeti ertekeket.
>> Eloszor probalkoztam a tabla = tablaTemp utasitassal persze sikertelenul.
>> Aztan olvastam hogy System.ArrayCopy a megoldas.
>> De nekem megse ugy tunik.
>> Ime a kodreszlet:
>>
>>
>> public class Sudoku extends Observable {
>> private Ertek tabla[][] = new Ertek[9][9];
>> private Ertek tablaTemp[][] = new Ertek[9][9];
>> ....
>>
>> // visszaad egy ket dimenzios tombot ami tele van a tabla elso
>> lehetseges soraival
>> e = elsoSorGenerate();
>>
>> //atmentem a tablat hogy legyen meg az eredeti
>>
>> for (int sor = 0; sor < tabla.length; sor++) {
>> System.arraycopy(tabla[sor], 0, tablaTemp[sor], 0,
>> tabla[sor].length);
>>
>> }
>>
>> if (e[tablaMutato][0] != 0){
>> for (int oszlop = 0; oszlop < 9; oszlop++) { //ITT
>> A HIBA ATIRODIK A TEMP ARRAY IS
>> tabla[0][oszlop].setErtek(e[tablaMutato][oszlop]);
>> }
>> }
>>
>> Na ezt nem ertem hogy mutat arra cimre a tabla es a tablaTemp, hogy
>> lehet megvaltoztatni a tabla ertekeit hogy megmaradjon a tablaTemp.
>>
>> Udv
>> Zoli
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130311/778fff65/attachment.html>
További információk a(z) Javalist levelezőlistáról