|
|||||||
|
|
|
![]() |
|
|
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: 7938
|
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: 7938
|
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 18:53. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
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: 7938
|
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: 7938
|
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: 19:16.




















