Problema da Date a String

di il
4 risposte

Problema da Date a String

Salve ragazzi ho un problema con delle date, ad esempio in un file.txt ho :
neg56
L47C12
12-06-2010
10-08-2014
Roma
neg44
L46B98
12-01-2014
null
Milano
che sarebbero rispettivamente: negozio, matricola, data di apertura, data chiusura, ubicazione.

dovrei trattare le date come Date e non semplicemente come stringhe, quindi ho dichiarato le variabili d'istanza come segue:
private String ID;
	private String matricola;
	private Date dataApertura;
	private Date dataChiusura;
	private String ubicazione;

//costruttore
public Negozio(String id, String matricola, Date dataA, Date dataC, String ubicazione)
	{
		this.ID = id;
		this.matricola = matricola;
		this.dataApertura = dataA;
		this.dataChiusura = dataC;
		this.ubicazione = ubicazione;
}
poi ho bisogno di creare un metodo statico read che vada a leggere i dati del file
public static Negozio read(Scanner s)
	{
		 if(!s.hasNext()) return null;
	     String id = s.nextLine();
	     if(!s.hasNext()) return null;
	     String matricola = s.nextLine();
	     if(!s.hasNext()) return null;

	    //come faccio con la data di apertura???

	     if(!s.hasNext()) return null;

	     //come faccio con la data di chiusura???

	     if(!s.hasNext()) return null;
	     String ubi = s.nextLine();
	  
	     return new Negozio (id, matricola,dataA,dataC,ubi);
	}
ma li dovrei fare un cast da Date a String ma non capisco come fare mi aiutate??
vi ringrazio in anticipo!

4 Risposte

  • Re: Problema da Date a String

    isanet ha scritto:


    poi ho bisogno di creare un metodo statico read che vada a leggere i dati del file
    È abbastanza brutto un metodo di lettura del genere come statico. E oltretutto se Negozio è già una classe "bean" che modella il negozio, non dovrebbe fare altro, non certo I/O da/a file.

    isanet ha scritto:


    ma li dovrei fare un cast da Date a String
    Non è un "cast" ma un "parsing". Da fare con un (Simple)DateFormat. Se il formato è fisso e noto a priori, meglio appunto un SimpleDateFormat, a cui devi chiaramente specificare il pattern. Vedi documentazione javadoc.
  • Re: Problema da Date a String

    È abbastanza brutto un metodo di lettura del genere come statico. E oltretutto se Negozio è già una classe "bean" che modella il negozio, non dovrebbe fare altro, non certo I/O da/a file.
    purtroppo il metodo deve essere fatto così e deve stare nella classe a cui dovrò applicarlo.

    come modificheresti il codice scritto da me sopra in modo tale che faccia quello che ho chiesto??
    senza però cambiare il metodo read.
    non ho idea di come possa fare
  • Re: Problema da Date a String

    isanet ha scritto:


    purtroppo il metodo deve essere fatto così e deve stare nella classe a cui dovrò applicarlo.
    E chi l'ha detto?? Non dirmi .. il prof. di turno ....

    isanet ha scritto:


    come modificheresti il codice scritto da me sopra in modo tale che faccia quello che ho chiesto??
    Per le date, l'ho detto prima. Usa SimpleDateFormat, crealo con il pattern appropriato (bastano 3 min. di lettura del javadoc per comprendere la specifica del formato). Poi una volta letta la riga della data, hai un String e con SimpleDateFormat fai un parse per ottenere un Date. Chiaramente il parsing può fallire, come gestire ParseException (che è "checked" quindi da considerare) lo puoi/devi stabilire tu.
  • Re: Problema da Date a String

    private String ID;
    	private String matricola;
    	private String dataApertura;
    	private String dataChiusura;
    	private String ubicazione;
    
    public Negozio(String id, String matricola, String dataA, String dataC, String ubicazione)
    	{
    		this.ID = id;
    		this.matricola = matricola;
    		this.dataApertura = dataA;
    		this.dataChiusura = dataC;
    		this.ubicazione = ubicazione;
    }
    
    public static Negozio read(Scanner s)
    	{
    		 if(!s.hasNext()) return null;
    	     String id = s.nextLine();
    	     if(!s.hasNext()) return null;
    	     String matricola = s.nextLine();
    	     if(!s.hasNext()) return null;
    	   
    	     String dataApertura = (s.nextLine());
    	     if(!s.hasNext()) return null;
    	    
    	     String dataChiusura = (s.nextLine());
    	     if(!s.hasNext()) return null;
    	     String ubicazione = s.nextLine();
    	  
    	     return new Negozio(id, matricola, dataApertura, dataChiusura,ubicazione);
    	     
    	}
    dovrei fare in questo modo?? cioè avere delle variabili String (invece di Date come prima) e poi al momento che mi servono faccio un parsing con SimpleDateFormat?????
    static SimpleDateFormat sdf = new SimpleDateFormat("dd-MMMM-yyyy");
Devi accedere o registrarti per scrivere nel forum
4 risposte