Salve a tutti, ho un codice il cui input da leggere sarebbe il seguente:
Da:Marco
A:Franco
Data:23-01-2017
Ciao,
oggi sono andato a casa.
Da:Anna
A:Roberta
Data:23-01-2017
Tutto ok!
Da:Marco
A:Roberta
Data:24-01-2017
ciao!
Io ho fatto il seguente codice costituito dalla classe Main :
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws Exception{
ArrayList<Messaggio> listaMessaggi= new ArrayList<Messaggio>(); //lista(arraylist) contenente tutti i singoli messaggi
String mittente="";
String destinatario="";
String giorno="";
String mese="";
String anno="";
String testo="";
BufferedReader br;
br = new BufferedReader(new FileReader("input.txt"));
String line;
Messaggio m = new Messaggio(mittente,destinatario,giorno,mese,anno,testo);
while((line = br.readLine())!=null) {
if(line.isEmpty()) {
continue;
}
if(line.startsWith("Da:")) {
String [] parole = line.split(":");
mittente = parole[1];
m.mittente=mittente;
}
if(line.contains("A:")) {
String [] parole = line.split(":");
destinatario = parole[1];
m.destinatario=destinatario;
}
if(line.contains("Data:")) {
String [] parole = line.split("-");
giorno=parole[0].replaceAll("Data:","");
mese=parole[1];
anno=parole[2];
m.giorno=giorno;
m.mese=mese;
m.anno=anno;
}
if(line.contains("")) {
testo=line.replace("", "");
m.testo=testo;
listaMessaggi.add(m);
m = new Messaggio(mittente,destinatario,giorno,mese,anno,testo);
}
}
System.out.println(listaMessaggi); //stampo lista contenente tutti i singoli messaggi
br.close();
}
}
e da una classe Messaggio :
public class Messaggio {
String mittente;
String destinatario;
String giorno;
String mese;
String anno;
String testo;
public Messaggio(String mittente, String destinatario,String giorno,String mese,String anno,String testo){
this.mittente=mittente;
this.destinatario=destinatario;
this.giorno=giorno;
this.mese=mese;
this.anno=anno;
this.testo=testo;
}
public String toString(){
StringBuffer sb = new StringBuffer();
sb.append(mittente+" scrive a "+destinatario+" nella data "+giorno+"/"+mese+"/"+anno+" "+testo);
sb.append("\n");
return sb.toString();
}
}
Il problema è che non mi stampa correttamente il tutto, poichè ogni riga la ripete più volte e non capisco il perchè