|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2003
Città: Rimini
Messaggi: 2279
|
[JAVA] Problema con Stack
Ho un problema con la classe Stack...
In un programma che ho scritto, all'interno di un algoritmo uso uno Stack all'interno del quale inserisco oggetti di tipo Point (mi servono per un backtracking). L'oggetto Point che pusho nello Stack è sempre lo stesso, ovviamente con le coordinate cambiate di volta in volta. L'algoritmo nn funzionava... allora ho fatto un debug e ho scoperto che, quando cambio le coordinate del Point, cambiano anche quelle dei Point all'interno dello stack, col risultato che dopo un po' di cicli ho uno stack pieno di Point tutti uguali! Che succede? Ho sbagliato qualcosa io oppure Java effettivamente inserisce all'interno dello Stack solo il riferimento all'oggetto?? Thanx
__________________
Gigabyte 965P-DS3 ¤ E6600@400*8 ¤ Scythe Ninja Plus Rev.B ¤ Ram 4GB ¤ HD SSD Crucial M4 128GB
Gainward 4850 Golden Sample ¤ Antec NEO 550HE ¤ CM Centurion 534 ¤ Dell Ultrasharp U2312HM Notebook Asus N551JW ¤ i7-4750HQ ¤ nVidia 960M 4GB ¤ 16GB DDR3 ¤ SSD Intel 850EVO 500GB |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2000
Messaggi: 235
|
Viene memorizzata la reference.
Devi creare + oggetti x avere valori diversi. Ciao
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2003
Città: Rimini
Messaggi: 2279
|
Ho capito. Quindi quando inserisco il Point nello Stack, supponendo che si chiami cellaCorrente, scrivo:
stack.push(new Point(cellaCorrente.x, cellaCorrente.y)); Devo fare una cosa del genere anche quando eseguo il pop(), oppure mi basta solo scrivere cellaCorrente = (Point)stack.pop(); ?
__________________
Gigabyte 965P-DS3 ¤ E6600@400*8 ¤ Scythe Ninja Plus Rev.B ¤ Ram 4GB ¤ HD SSD Crucial M4 128GB
Gainward 4850 Golden Sample ¤ Antec NEO 550HE ¤ CM Centurion 534 ¤ Dell Ultrasharp U2312HM Notebook Asus N551JW ¤ i7-4750HQ ¤ nVidia 960M 4GB ¤ 16GB DDR3 ¤ SSD Intel 850EVO 500GB |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2000
Messaggi: 235
|
Corretto.
Va bene anche il pop(). Occhio solo che il pop ti restituisce l'oggetto Point corrispondente allo stato dello stack. Se devi rimetterlo in una cella, lo devi poi fare tu esplicitamente. Ciao
__________________
...writing about climbing is boring. I would rather go climbing. (Chuck Pratt) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2003
Città: Rimini
Messaggi: 2279
|
Ok, grazie 1000
__________________
Gigabyte 965P-DS3 ¤ E6600@400*8 ¤ Scythe Ninja Plus Rev.B ¤ Ram 4GB ¤ HD SSD Crucial M4 128GB
Gainward 4850 Golden Sample ¤ Antec NEO 550HE ¤ CM Centurion 534 ¤ Dell Ultrasharp U2312HM Notebook Asus N551JW ¤ i7-4750HQ ¤ nVidia 960M 4GB ¤ 16GB DDR3 ¤ SSD Intel 850EVO 500GB |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:07.



















