Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    leggere valori in formato scientifico

    Salve,
    ho la necessità di leggere da un file (estenzione .txt) esterno una serie di numeri in notazione scientifica (Es 1.000E+003). Con Scanner riesco a leggere interi o double ma con numeri di questo tipo mi da errore. Help!

    così leggo una serie di interi:
    -----------------------------------------------------------------------------------------------------------------------------
    public static int[] legge(String documento) throws FileNotFoundException{//String documento -> contiene
    //l'indirizzo del File (C://desktop/...)

    Scanner numero= new Scanner(new File(documento)); //legge il file
    int[] valori=new int[100]; //NB!! la lunghezza dipende dal numero di features (100???)
    int i=0;

    while (numero.hasNext()){ //memorizza i valori in un vettore
    valori[i]=numero.nextInt();
    i++;
    } numero.close(); // chiude il file

    return (valori);
    }
    -----------------------------------------------------------------------------------------------------------------------------

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non so se funziona, prova a leggerlo come double e non come int :master:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    ho provato, ma non va..

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    Prova così:
    codice:
    DecimalFormat df=new DecimalFormat();
    Scanner numero=new Scanner(new File(documento));
    int[] valori=new int[100]; 
    int i=0;
    while (numero.hasNext()){ 
        valori[i]=df.parse(numero.next()).intValue(); 
        i++; 
    }
    numero.close();
    Ovviamente devi gestire le eccezioni

  5. #5
    scusa l'ignoranza.. df. cosè? cosa devo importare?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    Scusami, non ho copiato la prima riga del codice
    codice:
    DecimalFormat df=new DecimalFormat();
    ho aggiornato anche il messaggio precedente

  7. #7
    niente non va.. grazie mille cmq!

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    Tira fuori un'eccezione?
    Ho provato il codice, dovrebbe funzionare

  9. #9
    Exception in thread "main" java.util.InputMismatchException
    mi stampa questo

    il file di testo che importo è composto da 100 numeri di questo tipo

    9.9885700e+007 8.0007737e+007 6.0005528e+005....

    se funziona mi risolvi un grosso problema!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    72
    L'eccezione è tirata fuori dallo Scanner..
    Forse stai usando il metodo nextInt() di Scanner.. non puoi usarlo.. devi leggere i singoli numeri come stringhe tramite il metodo next() e usare il metodo parse(String s) di DecimalFormat per convertirlo in intero.. il tutto è riassunto qui:
    codice:
    valori[i]=df.parse(numero.next()).intValue();
    ho provato mettendo nel txt i numeri che mi hai postato e il risultato è questo:
    99885700
    80007737
    60005528

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 © 2025 vBulletin Solutions, Inc. All rights reserved.