View Full Version : [Java] Stringhe nulle
leone804
20-08-2006, 19:31
mi rendo conto della stupidità della domanda che sto per farvi ma non so più dove sbattere la testa :mbe:
il codice che mi crea problemi è questo:
s=br.readLine();
while(s!=null) {
v.addElement(s);
s=br.readLine();
}
v è un oggetto Vector, br è il buffered reader per l'input da tastiera. quando vado ad eseguire il programma il ciclo parte ma non termina mai, invece dovrebbe passare all'istruzione successiva quando lascio la stringa vuota. ho provato a mettere "" e " " al posto di null ma il risultato è sempre lo stesso. cosa sbaglio? vi ringrazio per l'aiuto e mi scuso ancora per la banalità della mia domanda :rolleyes:
Prova a guardare la lunghezza della stringa, metti while(s.length()>0) e vedi se funziona.
Dipende poi da cosa vuoi ottenere...
leone804
20-08-2006, 22:34
in pratica è solo una prova che ho scritto per capire il funzionamento dei vector visto che in altri programmi mi dava sempre problemi. prima "riempio" il vector e poi lo stampo. la condizione mi serve a terminare il riempimento del vector, però con quella condizione il ciclo non termina mai :(
ho usato il null perchè è quello che andrei ad usare negli altri programmi
Io seguirei il consiglio di MEMon, una cosa del genere:
while((s=br.readLine())!=null) {
if(s.trim().length != 0) {
v.addElement(s);
}else
break;
}
...o magari...
s=br.readLine();
while(!s.trim().equals("")) {
v.addElement(s);
s=br.readLine();
}
leone804
21-08-2006, 13:40
proverò anche queste soluzioni... nel caso di oggetti istanziati da classi definite da me il null dovrebbe andare bene lo stesso? :confused:
Si, non dovresti avere nessun problema.
Oppure anche (e forse meglio):
String line;
do {
line = br.readLine ();
if (line == null || line.trim().equals(""))
break;
v.addElement (line);
} while (true);Nota che readLine ritorna null in caso di EOF. Se br fa riferimento allo standard input (come hai detto), un EOF si può facilmente inserire, ad esempio su Windows, con CTRL+Z.
leone804
21-08-2006, 15:17
purtroppo non posso "sbizzarrirmi" più di tanto perchè essendo un esame per l'università devo attenermi agli esempi sul libro che uso. cmq grazie a tutti per i suggerimenti ;)
toglietemi una curiosità... ma perchè con s!=null il ciclo non termina mai? :p
edit- readLine ritorna null quando legge l'EOS end of stream, probabilmente non lo legge :D
leone804
22-08-2006, 19:45
niente da fare, continuo ad avere problemi con il readline e l'eos :muro: :muro: :muro:
ho provato con una semplice lettura da file txt ma mi riconosce la prima riga sempre nulla :cry:
BufferedReader br=new BufferdReader(new InputStreamReader(new FileInputStream (name)));
Address a = Address.read(br);
//metodo read
public static Address read(BufferedReader br) throws Exception {
String s1, s2, s3, s4;
s1=br.readLine();
if (s1==null){
System.out.println("ERRORE!!!!");
return null;
}
s2=br.readLine();
s3=br.readLine();
s4=br.readLine();
return new Address(s1,s2,s3,s4);
}
prima sembrava funzionare, ora invece continua a considerare la prima riga nulla e termina il programma con la stampa di "ERRORE"; se invece provo ad aggiungere qualcosa al file di ingresso mi compare l'errore Exception in thread "main" java.lang.NullPointerException
che mi consigliate? :cry:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.