Errore lettura

di il
4 risposte

Errore lettura

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è

4 Risposte

  • Re: Errore lettura

    Anto11796 ha scritto:


    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!
    Per leggere ed interpretare un testo del genere, serve più "logica", nel senso più codice e ragionamenti. Che non hai fatto.
    Già un line.contains("") non vuol dire nulla in questo contesto.
  • Re: Errore lettura

    andbin ha scritto:


    Per leggere ed interpretare un testo del genere, serve più "logica", nel senso più codice e ragionamenti. Che non hai fatto.
    Già un line.contains("") non vuol dire nulla in questo contesto.
    Perchè non so come fargli leggere le righe di testo.. non ho una "cosa" che li contraddistingue per leggerli
  • Re: Errore lettura

    Anto11796 ha scritto:


    non ho una "cosa" che li contraddistingue per leggerli
    Sì che c'è ... "finché non trovi un successivo Da:"
  • Re: Errore lettura

    Ho messo else

    Ma in ogni caso continua a scrivere più volte il tutto.. ovvero :

    Marco scrive a nella data // Da:Marco
    , Marco scrive a Franco nella data // A:Franco
    , Marco scrive a Franco nella data 23/01/2017 Ciao,
    , Marco scrive a Franco nella data 23/01/2017 oggi sono andato a casa.
    , Anna scrive a Franco nella data 23/01/2017 Da:Anna
    , Anna scrive a Roberta nella data 23/01/2017 A:Roberta
    , Anna scrive a Roberta nella data 23/01/2017 Tutto ok!
    , Marco scrive a Roberta nella data 23/01/2017 Da:Marco
    , Marco scrive a Roberta nella data 23/01/2017 A:Roberta
    , Marco scrive a Roberta nella data 24/01/2017 ciao!
Devi accedere o registrarti per scrivere nel forum
4 risposte