[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