| | |
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava |
Cauko, zacinam s Javou a uz odzaciatku som narazil na problem s ktorym neviem pohnut ani po hladani na nete. Mam classu state, kde mam ulozeny 2D array z integerov (reprezentacia hlavolamu), konstruktor a getter ktory dane pole vrati. Kód: public class state { private int x, y; private int[][] status;
state(int a, int b, int[][] array) //constructor { this.x = a; this.y = b; this.status = Arrays.copyOf(array, array.length); }
int[][] getStatus() { return Arrays.copyOf(status, status.length); } } V maine si chcem vytvorit 2 objekty, zaciatocny a konecny stav hlavolamu, ktore zadava uzivatel. Nacitam prvy vstup ktory ulozim do inputarray, nasledne vytovrim objekt a vypisem do konzoly: Kód: state startstate = new state(x, y, inputarray); System.out.println(Arrays.deepToString(startstate.getStatus())); Doteraz vsetko funguje ako ma. Problem nastane ked vytvorim druhy objekt rovnakym sposobom (pole inputarray bolo medzitym znova nacitane zo vstupu): Kód: state endstate = new state(x, y, inputarray); Ked ale po tomto chcem vypisat obsah arrayov v jednotlivych objektoch, obidve metody getStatus vratia rovnake hodnoty, konkretne rovnaky array ako bol nacitane do objektu endstate a array v objekte startstate sa prepisal. Co robim zle, resp kde konrketne mam chybu? Ako docielim aby oba objekty mohli mat jedinecne a rozdielne udaje, ku ktorym by som mohol pristupovat a menit ich nezavisle na sebe?
_________________ ITX >>> ATX |
|
Registrovaný: 02.12.06 Prihlásený: 11.04.24 Príspevky: 690 Témy: 35 Bydlisko: Rimavská So... | Napísal jarrro: 21.03.2018 13:12 | |
|
Len tip. Skús vrátiť priamo status nie jeho kópiu resp aj v konštruktore priraď priamo dané pole k tomu statusu
_________________ Math is the best! |
|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava | Napísal autor témy Miso122: 21.03.2018 13:23 | |
|
uz som skusal, nic
_________________ ITX >>> ATX |
|
Registrovaný: 19.05.08 Prihlásený: 18.04.24 Príspevky: 664 Témy: 28 Bydlisko: Slovensko |
V konstruktore, Kód: status = new int[array.length][]; for (int i = 0; i < array.length; i++) { status[i] = Arrays.copyOf(array[i], array[i].length); }
|
|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava | Napísal autor témy Miso122: 21.03.2018 15:00 | |
|
vdaka, funguje presne ako ma.
este otazka o getStatus, moze to zostat tak ako to je alebo aj tu treba upravit?
_________________ ITX >>> ATX |
|
Registrovaný: 19.05.08 Prihlásený: 18.04.24 Príspevky: 664 Témy: 28 Bydlisko: Slovensko |
Vytvor objekt, vytiahni status, vypis hodnotu, zmen v nom nieco a znovu ho vytiahni a vypis hodnotu. Hned zistis ci sa reflektuje zmena do objektu teda ci ti poslal novu instanciu alebo iba referenciu
|
|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava | Napísal autor témy Miso122: 22.03.2018 15:58 | |
|
Odskúšané vypísané, všetko funguje Vďaka
_________________ ITX >>> ATX |
|
Registrovaný: 19.05.08 Prihlásený: 18.04.24 Príspevky: 664 Témy: 28 Bydlisko: Slovensko |
si si isty ? odskusaj si toto: Kód: int[][] status = new int[2][2]; status[0][0]=5; status[1][1]=3; state start= new state(1,1,status); //vytvor objekt int[][] out = start.getStatus();//vytiahni status System.out.println(start.getStatus()[0][0]+","+start.getStatus()[1][1]);//vypis hodnotu out[0][0]=99;//zmen v nom nieco out[1][1]=33;//zmen v nom nieco System.out.println(start.getStatus()[0][0]+","+start.getStatus()[1][1]);//znovu ho vytiahni a vypis hodnotu
|
|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava | Napísal autor témy Miso122: 22.03.2018 16:25 | |
|
V algoritme vytiahnem pole, 4x ho zmením a vytvorím nové objekty. Po skončení algoritmu vypisem znova začiatočné pole, nerobi žiaden problém
_________________ ITX >>> ATX |
|
Registrovaný: 19.05.08 Prihlásený: 18.04.24 Príspevky: 664 Témy: 28 Bydlisko: Slovensko |
Tak potom super, s tou povodnou metodou getStatus() by ti vsak malo zmenit hodnotu. Len aby sa ti nahodou nestalo niekde, ze by sa ti menili hodnoty a nevedel si odkial, ten kod co som postol by ti to ukazal. Ak by tam isla referencia, druhy vypis by ti zobrazil zmenene hodnoty.
|
|
Registrovaný: 15.06.14 Prihlásený: 18.04.24 Príspevky: 17930 Témy: 142 Bydlisko: Bratislava | Napísal autor témy Miso122: 26.03.2018 0:40 | |
|
no tak na tvojom kode mi to meni povodne pole zaujimave //ale uz som asi prisiel na to preco to v mojom pripade nemeni udaje, mam to riesene takto, kde vlastne len vytiahnem 2d array, ktory skopirujem a pracujem len s danou kopiou: Kód: int[][] editedarray = act.getStatus(); int[][] leftarray = new int[x][y];
for (int i = 0; i < editedarray.length; i++) { leftarray[i] = Arrays.copyOf(editedarray[i], editedarray[i].length); }
_________________ ITX >>> ATX |
|
| Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| c++ sqlite alebo xml pre ukladanie velkeho mnozstva dat v Assembler, C, C++, Pascal, Java | 5 | 435 | 09.07.2018 8:12 BX | | ukladanie dát z hry v PHP, ASP | 14 | 403 | 30.08.2014 19:40 bqoqyq | | Ukladanie dat v opere v Sieťové a internetové programy | 1 | 467 | 30.07.2009 11:35 marzo | | Samsung Galaxy Mini ukladanie dát v Smartfóny a tablety | 1 | 701 | 06.10.2012 13:07 Marko125 | | spracovane + ukladanie dát do db v PHP, ASP | 14 | 524 | 10.03.2009 21:12 djsulo | | Java - odchytávanie dát z portov v Assembler, C, C++, Pascal, Java | 0 | 419 | 25.01.2012 0:07 beny800 | | phpBB2: Načo slúžia jednotlivé .tpl súbory v Redakčné systémy | 0 | 2548 | 11.02.2007 20:28 JanoF | | Java pre mobil v Android, iOS, Windows Phone (Mobile) | 1 | 514 | 30.09.2010 19:54 Forty- | | Dynamické objekty v PHP, ASP | 25 | 1074 | 04.01.2010 15:37 Tominator | | ActiveX objekty v Ostatné programy | 5 | 857 | 12.12.2010 0:04 playmaker | | PHP Objekty [ Choď na stránku: 1, 2 ] v PHP, ASP | 58 | 3449 | 03.05.2011 17:42 misko16 | | Photoshop objekty v Grafické programy | 4 | 452 | 26.08.2011 10:59 nickairsoft | | Objekty ako polia v PHP, ASP | 7 | 689 | 03.01.2010 12:49 stenley | | Tvorba java hier pre mobily v Počítačové hry | 1 | 1360 | 12.12.2010 15:15 Raiper34 | | Java developer pre oblasť poisťovníctva v Ponuka práce | 0 | 362 | 07.01.2014 15:30 salatekovaj | | P:3d tlačené objekty v Predám | 13 | 1356 | 25.11.2019 10:20 $ph!nX |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|