|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
[Java] Lista concatenata, errore nel metodo aggiungi... ma dove?
Salve a tutti,
ho da poco finito un package in java che risolve, date le lettere e le parole da trovare, il classico giochino da settimana enigmistica in cui bisogna cercare dellle parole in tutte le direzioni in mezzo a tante lettere, comuqnue bando alle cianci ![]() Se il programma trova più di tre parole al quarto inserimento ritorna un errore nel metodo aggiungi.. vi incollo il metodo, vedete se indivituate il perchè ![]() Codice:
class Nodo{ Nodo next; Parola info; } public class FoundLC extends Found{ Nodo inizio=null; public void aggiungi(Parola p){ Nodo nuovo=new Nodo(); nuovo.info=p; if(inizio==null){ inizio=nuovo; nuovo.next=null; }else{ Nodo cor=inizio; Nodo pre=null; while(cor!=null && cor.info.compareTo(nuovo.info)<=0){ pre=cor; cor=cor.next; } pre.next=nuovo; nuovo.next=cor; } }//AGGIUNGI ![]() Come sempre Grazie a tutti ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
mi dice che errore ti dice?
__________________
My gaming placement |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Codice:
C:\poo\appelli\puzzle Numero righe: 6 Numero colonne: 6 Carattere <0;0>: a Carattere <0;1>: b Carattere <0;2>: c Carattere <0;3>: d Carattere <0;4>: e Carattere <0;5>: f Carattere <1;0>: g Carattere <1;1>: h Carattere <1;2>: i Carattere <1;3>: l Carattere <1;4>: m Carattere <1;5>: u Carattere <2;0>: t Carattere <2;1>: fs Carattere <2;2>: wd Carattere <2;3>: dfdsf Carattere <2;4>: dfdsfgds Carattere <2;5>: fgdsgsd Carattere <3;0>: gsdge Carattere <3;1>: gewfqe Carattere <3;2>: grehth Carattere <3;3>: yjuj Carattere <3;4>: jt Carattere <3;5>: d Carattere <4;0>: s Carattere <4;1>: x Carattere <4;2>: f Carattere <4;3>: yhy Carattere <4;4>: ui Carattere <4;5>: iy Carattere <5;0>: rr Carattere <5;1>: ww Carattere <5;2>: q Carattere <5;3>: s Carattere <5;4>: x Carattere <5;5>: a a b c d e f g h i l m u t f w d d f g g g y j d s x f y u i r w q s x a Quante Parole vuoi ricercare? 5 Parola numero 1 da Ricercare: abc Parola numero 2 da Ricercare: fuf Exception in thread "main" java.lang.NullPointerException at poo.appelli.puzzle.FoundLC.aggiungi(FoundLC.java:26) at poo.appelli.puzzle.FoundLC.cercaSud(FoundLC.java:101) at poo.appelli.puzzle.FoundLC.risolvi(FoundLC.java:70) at poo.appelli.puzzle.TestPuzzle.main(TestPuzzle.java:33) Premere un tasto per continuare . . . cioè eliminando la seconda condizione nel while di scorrimento: Codice:
public void aggiungi(Parola p){ Nodo nuovo=new Nodo(); nuovo.info=p; if(inizio==null){ inizio=nuovo; nuovo.next=null; }else{ Nodo cor=inizio; Nodo pre=null; while(cor!=null /*&& cor.info.compareTo(nuovo.info)<=0 */){ pre=cor; cor=cor.next; } pre.next=nuovo; nuovo.next=cor; } }//AGGIUNGI Codice:
C:\poo\appelli\puzzle Numero righe: 6 Numero colonne: 6 Carattere <0;0>: sdfsaffd Carattere <0;1>: fdsfsdvsds Carattere <0;2>: ad Carattere <0;3>: sdvsd Carattere <0;4>: asfdas Carattere <0;5>: fr Carattere <1;0>: d Carattere <1;1>: sad Carattere <1;2>: dsdf Carattere <1;3>: strh Carattere <1;4>: fbf Carattere <1;5>: as Carattere <2;0>: dfgdasfg Carattere <2;1>: rgdf Carattere <2;2>: bcv Carattere <2;3>: sdfv Carattere <2;4>: dfsvb Carattere <2;5>: fbgf Carattere <3;0>: dhdf Carattere <3;1>: ghg Carattere <3;2>: hsd Carattere <3;3>: gr Carattere <3;4>: g Carattere <3;5>: dfgbhbtd Carattere <4;0>: gh Carattere <4;1>: dsfnb Carattere <4;2>: fsd Carattere <4;3>: bdf Carattere <4;4>: bfd Carattere <4;5>: bf Carattere <5;0>: bfd Carattere <5;1>: bfdb Carattere <5;2>: dfbsa Carattere <5;3>: gb Carattere <5;4>: rhtgh Carattere <5;5>: gh s f a s a f d s d s f a d r b s d f d g h g g d g d f b b b b b d g r g Quante Parole vuoi ricercare? 5 Parola numero 1 da Ricercare: faf Parola numero 2 da Ricercare: dsd Parola numero 3 da Ricercare: bbb Parola numero 4 da Ricercare: gbg Parola numero 5 da Ricercare: dddddddd faf <0;5> Direzione Sud faf <2;5> Direzione Nord dsd <1;0> Direzione Est dsd <1;2> Direzione Ovest bbb <4;3> Direzione Est bbb <4;5> Direzione Ovest gbg <3;3> Direzione Sud gbg <3;3> Direzione SudEst gbg <5;3> Direzione Nord gbg <5;5> Direzione NordOvest Premere un tasto per continuare . . .
__________________
![]() |
|
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Comunque impeccabile nel senso che non mi da l'errore in questione. Che neanche tu vedo che trovi...
__________________
![]() |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
E comunque:
Codice:
faf <0;5> Direzione Sud faf <2;5> Direzione Nord dsd <1;0> Direzione Est dsd <1;2> Direzione Ovest bbb <4;3> Direzione Est bbb <4;5> Direzione Ovest <-------- ESATTO gbg <3;3> Direzione Sud <-------- ESATTO gbg <3;3> Direzione SudEst<-------- ESATTO gbg <5;3> Direzione Nord<-------- ESATTO gbg <5;5> Direzione NordOvest<-------- ESATTO ![]() Dunque Risottolineo: Impeccabile ![]() Comunque l'errore che cerco e non trovo l'ho detto prima qual è.. qualcuno a qualche idea?
__________________
![]() Ultima modifica di luxorl : 22-06-2005 alle 17:53. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Dato che quello che stai facendo è l'appelo di poo del prof. NIGRO
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Comunque, visto che ci sei, controlla il compareTo nella classe parola. Poi, se vuoi posta anche il risolvi, che vediamo se è tutto ok?
__________________
My gaming placement |
![]() |
![]() |
![]() |
#8 | ||
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
![]() ![]() non penso tu abbia molto chiaro il programma, cmq non fa 4 spostamenti.. ma la parola è presente 4 volte.. a quelle cordinate numeriche e che si estende lungo quella direzione... ripeto da questo punto di vista il programma è impeccabile! Quote:
inserisce massimo tre parole e poi faglia!
__________________
![]() |
||
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Jun 2004
Città: Catania
Messaggi: 88
|
Dimmi se ho capito il problema?
Se inserisci in coda il programma funziona, mentre se inserisci in testa non funziona o meglio dire dà errore di NullPointerException.
__________________
Mic |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Evidentemente p è null; l'errore è da un'altra parte.
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
Cmq il problema credo che sia nelle inizializzazioni delle variabili, se posti la cartella del prgetto zippata con tutti i sorgenti lo possimao anche aggiustare.
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Codice:
public int compareTo(Object ob){ Parola p=(Parola)ob; if(this.equals(p)) return 0; if(this.parola.length()<p.parola.length()) return -1; if(this.parola.length()>p.parola.length()) return +1; if(this.parola.length()==p.parola.length() && this.direzione<p.direzione) return +1; if(this.parola.length()==p.parola.length() && this.direzione>p.direzione) return -1; if(this.parola.length()==p.parola.length() && this.direzione==p.direzione && this.parola.compareTo(p.parola)<0) return -1; if(this.parola.length()==p.parola.length() && this.direzione==p.direzione && this.parola.compareTo(p.parola)>0) return +1; return 0; } capito?
__________________
![]() |
|
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
l'errore non può che essere là (date una controllate per favore a come collego il nuovo "vagoncino" con pre e cor) oppure nel compareTo, perchè se elimino la seconda condizione nel while tutto funziona bene!
__________________
![]() |
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Jul 2004
Messaggi: 1578
|
Quote:
|
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jun 2005
Città: Reggio Calabria
Messaggi: 875
|
![]() ![]() Cmq secondo me il problema è il compareTo(), l'hai definito cerrettamente in "Parola"? Io ho avuto un problema analogo in un altro programma... |
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
sxusa, faccio una considerazione stupida, ma provala.
Concatena gli if con degli else, ovvero, non mettere tutti if, ma fai delle concatenazioni if(){...}else if(){...}, e prova, e poi dici che succede.
__________________
My gaming placement |
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
__________________
![]() |
|
![]() |
![]() |
![]() |
#19 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
Il mio compareTo ritorna in ogni caso un intero.. che "male che va" (cioè se nessun if è true) è uguale a 0 (ultima riga = return 0 ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Ecco il package, manca il main però che l'ho rovinato per dei test... ed ora non ho il tempo per riscriverlo!
__________________
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:55.