Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 11 ] 
AutorSpráva
Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok NapísalOnline : 21.03.2018 12:37

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
Offline

Užívateľ
Užívateľ
[Java] Konstruktory a ukladanie dat pre jednotlive objekty

Registrovaný: 02.12.06
Prihlásený: 11.04.24
Príspevky: 690
Témy: 35
Bydlisko: Rimavská So...
Príspevok NapísalOffline : 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!
Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok Napísal autor témyOnline : 21.03.2018 13:23

uz som skusal, nic







_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
[Java] Konstruktory a ukladanie dat pre jednotlive objekty

Registrovaný: 19.05.08
Prihlásený: 18.04.24
Príspevky: 664
Témy: 28
Bydlisko: Slovensko
Príspevok NapísalOffline : 21.03.2018 14:30

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);
}


Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok Napísal autor témyOnline : 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
Offline

Užívateľ
Užívateľ
[Java] Konstruktory a ukladanie dat pre jednotlive objekty

Registrovaný: 19.05.08
Prihlásený: 18.04.24
Príspevky: 664
Témy: 28
Bydlisko: Slovensko
Príspevok NapísalOffline : 21.03.2018 17:11

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 :)


Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok Napísal autor témyOnline : 22.03.2018 15:58

Odskúšané vypísané, všetko funguje :) Vďaka







_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
[Java] Konstruktory a ukladanie dat pre jednotlive objekty

Registrovaný: 19.05.08
Prihlásený: 18.04.24
Príspevky: 664
Témy: 28
Bydlisko: Slovensko
Príspevok NapísalOffline : 22.03.2018 16:15

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


Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok Napísal autor témyOnline : 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
Offline

Užívateľ
Užívateľ
[Java] Konstruktory a ukladanie dat pre jednotlive objekty

Registrovaný: 19.05.08
Prihlásený: 18.04.24
Príspevky: 664
Témy: 28
Bydlisko: Slovensko
Príspevok NapísalOffline : 22.03.2018 16:37

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.


Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 18.04.24
Príspevky: 17930
Témy: 142
Bydlisko: Bratislava
Príspevok Napísal autor témyOnline : 26.03.2018 0:40

no tak na tvojom kode mi to meni povodne pole :D 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
Odpovedať na tému [ Príspevkov: 11 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. c++ sqlite alebo xml pre ukladanie velkeho mnozstva dat

v Assembler, C, C++, Pascal, Java

5

435

09.07.2018 8:12

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ukladanie dát z hry

v PHP, ASP

14

403

30.08.2014 19:40

bqoqyq Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ukladanie dat v opere

v Sieťové a internetové programy

1

467

30.07.2009 11:35

marzo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Samsung Galaxy Mini ukladanie dát

v Smartfóny a tablety

1

701

06.10.2012 13:07

Marko125 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. spracovane + ukladanie dát do db

v PHP, ASP

14

524

10.03.2009 21:12

djsulo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - odchytávanie dát z portov

v Assembler, C, C++, Pascal, Java

0

419

25.01.2012 0:07

beny800 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. phpBB2: Načo slúžia jednotlivé .tpl súbory

v Redakčné systémy

0

2548

11.02.2007 20:28

JanoF Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java pre mobil

v Android, iOS, Windows Phone (Mobile)

1

514

30.09.2010 19:54

Forty- Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Dynamické objekty

v PHP, ASP

25

1074

04.01.2010 15:37

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ActiveX objekty

v Ostatné programy

5

857

12.12.2010 0:04

playmaker Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP Objekty

[ Choď na stránku:Choď na stránku: 1, 2 ]

v PHP, ASP

58

3449

03.05.2011 17:42

misko16 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Photoshop objekty

v Grafické programy

4

452

26.08.2011 10:59

nickairsoft Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Objekty ako polia

v PHP, ASP

7

689

03.01.2010 12:49

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Tvorba java hier pre mobily

v Počítačové hry

1

1360

12.12.2010 15:15

Raiper34 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java developer pre oblasť poisťovníctva

v Ponuka práce

0

362

07.01.2014 15:30

salatekovaj Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. P:3d tlačené objekty

v Predám

13

1356

25.11.2019 10:20

$ph!nX Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra