/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hjælp til state-identifikation af objektie~
Fra : news.cybercity.dk


Dato : 05-05-06 18:23

Sidder lige og nørkler med et problem:

Jeg har oprettet et Object[][] field og indsat nye objekter fra klassen
punkt.java. Jeg har benyttet mig af et state-pattern, og sætter derfor det
nye objekt til at være i forskellige states. Til dette benyttes en abstrakt
klasse PunktState og derunder forskellige state-klasser. Jeg er ret sikker
på at mit state-pattern fungerer hensigtsmæssigt.

Når jeg senere skal identificere objekterne i fieldet, har jeg problemer med
at finde ud af hvilken state de er i. Jeg har prøvet at bruge "instanceof"
operatoren, men den kan kun undersøge hvilken klasse, som objekterne er
fra - i dette tilfælde altså "Punkt".

Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få
overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige
punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver,
modtages med kyshånd.

public void printField(){
for (int i = 0; i < numberOfRows; i++){
for (int j = 0; j < numberOfColumns; j++){
if(field[i][j] == null){System.out.print('.');}
if(field[i][j] instanceof Punkt){System.out.print('H');}
}
System.out.println(' ');
}

}

På forhånd tak!



 
 
Thorbjørn Ravn Ander~ (05-05-2006)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 05-05-06 19:04

"news.cybercity.dk" <minmail@ok.com> writes:

> Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få
> overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige
> punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver,
> modtages med kyshånd.

Lav en toString() metode som printer det ud du skal bruge. Så kan du
udskrive hvert objekt direkte for sig.

--
Thorbjørn Ravn Andersen


Janus (06-05-2006)
Kommentar
Fra : Janus


Dato : 06-05-06 03:57

Thorbjørn Ravn Andersen wrote:
> "news.cybercity.dk" <minmail@ok.com> writes:
>
>> Jeg sidder og prøver at få den til at udskrive mit field, så jeg kan få
>> overblik over det. Forslag til hvordan jeg kan skelne mellem de forskellige
>> punkt-states, så jeg kan få dem udskrevet som forskellige bogstaver,
>> modtages med kyshånd.
>
> Lav en toString() metode som printer det ud du skal bruge. Så kan du
> udskrive hvert objekt direkte for sig.
>

-og hvis du sidder og undrer dig over, hvad Thorbjørn mon mener, så er det:

I din klasse PunktState overskriver du metoden toString() med noget i
stil med:

public String toString() {
String str = "I am " + this.getIdentifier() + ", and my state is " +
this.getState();
return str;
}

Så kan du gennemløbe dine fields som du gør i dit eget eksempel, men i
den dobbelte for-løkke blot skrive:
System.out.println(field[i][j]);

Java _er_ nu et dejligt sprog.


Vh Janus

Karsten Lyng (07-05-2006)
Kommentar
Fra : Karsten Lyng


Dato : 07-05-06 02:24

Tak for de brugbare svar. Jeg sidder nu imidlertid med et nyt problem.

Hvordan kan jeg tilgå mit field fra en anden klasse? Jeg vil gerne kunne
lave forespørgelser på hvilke objekter der ligger i en given position.



Janus (08-05-2006)
Kommentar
Fra : Janus


Dato : 08-05-06 11:51

Karsten Lyng wrote:
> Tak for de brugbare svar. Jeg sidder nu imidlertid med et nyt problem.
>
> Hvordan kan jeg tilgå mit field fra en anden klasse? Jeg vil gerne kunne
> lave forespørgelser på hvilke objekter der ligger i en given position.
>
>

Normalvis laver man en get-metode i den klasse, der indeholder dit
field[][]: public Object[][] getField() { return field; }

Så giver du den anden klasse en reference til den klasse, der indeholder
dit field. Eksempelvis

public class MyClassWithField {
private Object[][] field;
...
public Object[][] getField() {
return field;
}
....
}


public class MyClassThatWantsToAccessField {
private Object[][] field;
...
public void setField(Object[][] field) {
this.field = field;
// do stuff with field
}
....
}


Og så noget i stil med:

MyClassWithField c1 = new MyClassWithField();
MyClassThatWantsToAccessField c2 = new MyClassThatWantsToAccessField();
c2.setField(c1.getField());


Vh Janus

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste