[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