/ 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
Hvorfor kommer der ekstra objekter med i m~
Fra : Peter


Dato : 11-05-02 08:41

Hej NG
Jeg har denne metode i en klasse:

public void printValues(){
Point p = new Point();
Point q = new Point();

while(data.hasNext()){
if(point.hasNext()){
p = point.next();
}
while(point.hasNext()){
q = point.hasNext();
p.print();
q.print();
p = q;
}
}
p = new Point(1,1,1,1);
q = new Point(2,2,2,2);
}

data og point refererer begge til LinkedList. p.print() skriver
koordinatværdierne ud for p, det samme gør q.
Når jeg kalder denne metode, ville jeg mene, at det eneste der skrives
til skærmen er indholdet af en LinkedList for hvert element i data.
Men sådan går det ikke. For det sidste element i data udskrives som
det første punkt (1,1,1,1) og som det sidste (2,2,2,2) på trods af
disse ikke er elementer i den LinkedList.
Koden er forsimplet, men jeg håber der er nogen der kan fortælle mig
hvorfor. Og jeg ved godt det ikke er god kode at p og q flere steder,
men jeg vil bare gerne vide hvorfor det sker at de får sneget sig ind
i while-løkken efter de er ændret længere nede i koden.

Venlig hilsen
Peter

 
 
Lars Dam (11-05-2002)
Kommentar
Fra : Lars Dam


Dato : 11-05-02 12:08

On Sat, 11 May 2002 09:40:34 +0200, Peter <anskjaer_remove@omk.dk>
wrote:

>Koden er forsimplet, men jeg håber der er nogen der kan fortælle mig

Prøv at poste den originale kode - du har cuttet for meget til at det
er muligt at hjælpe dig. F.eks. kan man i din kodestump læse at en
linked list har en hasNext() metode - giver ingen mening.

Når du beder folk om at debugge et så specifikt problem som dit, så
duer det ikke at sende noget gejl ud

>Venlig hilsen
>Peter

vh. ld

Peter (11-05-2002)
Kommentar
Fra : Peter


Dato : 11-05-02 16:58

On Sat, 11 May 2002 09:40:34 +0200, Peter <anskjaer_remove@omk.dk>
wrote:

Hej NG
Jeg prøver lige igen
Jeg har denne metode i en klasse:
>
>public void printValues(){
> Point p = new Point();
> Point q = new Point();
>
> while(data.hasNext()){
> if(point.hasNext()){
> p = point.next();
> }
> while(point.hasNext()){
> q = point.next();
> p.print();
> q.print();
> p = q;
> }
> }
> p = new Point(1,1,1,1);
> q = new Point(2,2,2,2);
>}
>
jeg ser lige om jeg kan forklare det lidt bedre, for det er sådan set
koden hvor jeg bare har klippet nogle linjer væk som er ligegyldige
for forklaringen.
data og point er begge Iterator som hører til hver deres LinkedList.
Det vil sige, meningen med kodestumpen er, at udskrive alle punkterne
i hver LinkedList parvis. Men sådan går det ikke.
For det første element i DataList som data-iteratoren kører igennem
virker det fint. Men når det sidste element pilles frem og køres
igennem med point-iteratoren starter den med at skrive (1,1,1,1) og
ikke det første element i den LinkedList der hører til
point-iteratoren. Herefter går det fint indtil den skriver det sidste
element, dette er nemlig (2,2,2,2) som heller ikke ligger i den
LinkedList. Så det ser nogenlunde sådan ud:
(a,b,c,d) er objekter i den LinkedList der hører til point-iteratoren.

(1,1,1,1) a
a b
b c
c d
d (2,2,2,2)
hvor det skulle have været
a b
b c
c d

Jeg håber det hjalp på forståelsen

Venlig hilsen
Peter

Lars Dam (11-05-2002)
Kommentar
Fra : Lars Dam


Dato : 11-05-02 19:54

On Sat, 11 May 2002 17:58:02 +0200, Peter <anskjaer_remove@omk.dk>
wrote:

>On Sat, 11 May 2002 09:40:34 +0200, Peter <anskjaer_remove@omk.dk>
>wrote:
>
>Hej NG
>Jeg prøver lige igen
>Jeg har denne metode i en klasse:
>>
>>public void printValues(){
>> Point p = new Point();
>> Point q = new Point();

Hvor new'e disse, når de ikke bliver brugt?

>> while(data.hasNext()){
>> if(point.hasNext()){
>> p = point.next();
>> }
>> while(point.hasNext()){
>> q = point.next();
>> p.print();
>> q.print();
>> p = q;
>> }
>> }
>> p = new Point(1,1,1,1);
>> q = new Point(2,2,2,2);

Igen disse kan umuligt blive brugt til noget?

>>}
>>
>jeg ser lige om jeg kan forklare det lidt bedre, for det er sådan set
>koden hvor jeg bare har klippet nogle linjer væk som er ligegyldige
>for forklaringen.

Tilsyneladende ikke. Kodestumpen er forvirrende, og det er vigtigt at
vide hvornår du initialisere iteratorerne. Se også de 'dumme'
spørgsmål som er skrevet ovenfor.

>data og point er begge Iterator som hører til hver deres LinkedList.
>Det vil sige, meningen med kodestumpen er, at udskrive alle punkterne
>i hver LinkedList parvis. Men sådan går det ikke.

Et gæt er at du bruger 'nestede' iterationer, når disse skal itereres
parvist?

Hvis du vil have mere hjælp, så post den komplette kode; ellers er det
umuligt at fortælle hvad der sker. Det er fint nok at du fortæller
hvad du ønsker, men vi kan ikke sige hvad der er galt uden at se hele
koden (hvordan vil du have at vi kan finde fejl i din kode, hvis vi
ikke kan se den?).

vh. ld


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

Månedens bedste
Årets bedste
Sidste års bedste