Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] problema in lettura da file.....

    ho questo file:

    01/01/2013
    Avellino
    5
    14
    Benevento
    3
    13
    Caserta
    4
    15
    Napoli
    7
    16
    Salerno
    10
    15
    02/01/2013
    Avellino
    5
    13
    Benevento
    4
    11
    Caserta
    4
    16
    Napoli
    7
    9
    Salerno
    6

    devo leggerlo ....ho fatto questo metodo di lettura
    codice:
    public static Città read(Scanner s)
    	{
    		
    		DateFormat df= new SimpleDateFormat("dd/MM/yyyy");
    		Date d=null;
    		String Sd;
    		if(!s.hasNextLine())
    			return null;
    		Sd=s.nextLine();
    		try {
    			d=(Date)df.parse(Sd);
    		} catch (ParseException e) {
    			e.printStackTrace();
    		}
    		String n;
    		if(!s.hasNextLine())
    			return null;
    		n=s.nextLine();
    		String Smn;
    		if(!s.hasNextLine())
    			return null;
    		Smn=s.nextLine();
    		int mn=Integer.parseInt(Smn);
    		String Smx;
    		if(!s.hasNextLine())
    			return null;
    		Smx=s.nextLine();
    		int mx=Integer.parseInt(Smx);
    		return new Città(d,n,mn,mx);
    		
    	
    	}
    mi da errore...per quello che ho capito l errore sta nel fatto che mi legge la data anche quando non deve cioè rifacendoci al file mi legge la prima volta

    01/01/2013
    Avellino
    5
    14
    mentre la seconda volta mi legge
    Benevento
    3
    13
    in questo secondo caso mi da errore perche tenta di castare benevento in data...come risolvo???

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [JAVA] problema in lettura da file.....

    Originariamente inviato da rossonero922
    in questo secondo caso mi da errore perche tenta di castare benevento in data...come risolvo???
    In diversi modi:
    - o tratti tutto quanto c'è tra una data e l'ultima info prima della successiva data come un "record" e quindi fornirai un oggetto che ha una data e una lista di città. (uhm, vedo adesso che Città ha la data, quindi in effetti non è sensato)
    - oppure gestisci un po' di logica per fare la lettura/parse della data solo ogni tot che sai tu.

    Alcuni consigli (ascoltali):
    - per ParseException non fare solo un ParseException, cioè questo va bene ma se la data fosse malformata comunque continuare con il resto non avrebbe senso, quindi fai uscire o ParseException o una tua eccezione di significato più appropriato.
    - dai nomi sensati alle variabili ... non Sd, d, n
    - ho la sensazione che quel read statico l'hai messo in una classe in mezzo a un sacco di altra roba, valuta di gestire la sola lettura da file in una classe separata e apposita ... e non con metodi statici!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: [JAVA] problema in lettura da file.....

    Aggiungo: non usare lettere accentate nei nomi delle classi, se il file viene aperto con una codifica diversa viene fuori un porcaio
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    non ne vengo a capo.....avevo pensato di controllare se quella è una data,se lo è legge altrimenti salta e va alla lettura successiva...ma non riesco a implementare

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da rossonero922
    non ne vengo a capo.....avevo pensato di controllare se quella è una data,se lo è legge altrimenti salta e va alla lettura successiva...ma non riesco a implementare
    Se la data si presenta nel file con una cadenza esatta, ad esempio sempre ogni 5 città, è facile, tieni un "contatore" delle città. A 0 sai che devi leggere la data. Alla quinta città riazzeri e per la successiva città sai di nuovo di dover leggere la data.

    Se la data non ha cadenza fissa/nota .... è più un problema ma in teoria risolvibile.


    P.S. prima quando dicevo "per ParseException non fare solo un ParseException" volevo scrivere "per ParseException non fare solo un printStackTrace".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  6. #6
    mmm quindi potrei usare un while se ho capito bene.....comunque grazie per i consigli ora che hai spiegato che parlavi dell printStackTrace() ho capito che intendevi......XD

  7. #7
    ho fatto cosi:
    codice:
    public static Città raed(Scanner s)
    	{
    	DateFormat df= new SimpleDateFormat("dd/MM/yyyy");
    	
    	String Sd,n ,Smn,Smx;
    	int mx ,mn;
    	Date d = null;
    	
    	if(contatore==0)
    	{	
    		if(!s.hasNextLine())
    			return null;
    	Sd=s.nextLine();
    	
    	try {
    		
    		d = df.parse(Sd);
    			
    	} catch (ParseException e) {
    			
    	e.printStackTrace();
    	}
    	
    	}
    	
    		
    		if(!s.hasNextLine())
    		return null;
    		n=s.nextLine();
    		
    		
    		if(!s.hasNextLine())
    		return null;
    		Smn=s.nextLine();
    	    mn=Integer.parseInt(Smn);
    		
    		if(!s.hasNextLine())
    			return null;
    		Smx=s.nextLine();
    		mx=Integer.parseInt(Smx);
    		
    		contatore++;
    		if(contatore==5)contatore=0;
    	
    	
    	return new Città(d,n,mn,mx);
    		
    	
    	}
    solo adesso mi da questo output
    01/01/2013
    Avellino
    5
    14
    null
    Benevento
    3
    13
    null
    Caserta
    4
    15
    null
    Napoli
    7
    16
    null
    Salerno
    1
    15
    02/01/2013
    Avellino
    5
    13
    null
    Benevento
    4
    11
    null
    Caserta
    4
    16
    null
    Napoli
    7
    9

    cioè mi schiaffa quei null nella posizione della data...come dovrei farli sparire?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.