[Javalist] tomb hiba
Peter Verhas
peter at verhas.com
2013. Már. 11., H, 11:05:09 CET
Itten komoly bajok vannak ezzel a példával.
Először is, a clone() metódusban nincs y, kimaradt a második, belső ciklus.
Pont az eredeti problémát, hogy az Ertek-ből nem keletkezik új copy nem oldja meg. Persze ezt kikerülöd azzal, hogy helyette immutable Integer-t használsz, amivel csökkented az absztakciós szintet, és ezért nincs probléma. Mintapéldának kifejezetten rossz. Egyébként is.
Aztán meg nagyon nem látom értelmét a setternek, meg a getternek. Miért olvashatóbb a
> copy.setValue(x, y, values[x][y]);
>
mint
copy.values[x][y] = values[x][y]
Csak azért settert meg gettert használni, mert az divatos? Mi az értelme a setter-nek, meg a getter-nek? Nah, majd erről is írok egy birkapásztor cikket. Elmagyarázom a birkáknak a lényeget (bocs, ez csak rossz vicc volt, nagyon beképzelt a mondat, de nem bírom kihagyni a poént).
--
Verhás Péter
peter at verhas.com
+36(30)9306805
skype: verhas
On 2013.03.10., at 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
>>
>> _______________________________________________
>> Javalist mailing list
>> Javalist at lists.javaforum.hu
>> http://lists.javaforum.hu/mailman/listinfo/javalist
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20130311/a09603e3/attachment.html>
További információk a(z) Javalist levelezőlistáról