Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56

    [Java] parse di più double in una stringa alfanumerica

    Salve a tutti
    avrei una richiesta da farvi
    ho fatto in java un piccolo programmino che da interfaccia grafica prende in input un double da una jtextfield
    ora però vorrei implementare la funzione che oltre a poter prendere solo un double
    abbia la possibilità di poter inserire sempre nella stessa jtextfield per esempio
    12.67+78.95+16
    lui ne deve calcolare la somma ovviamente e deve utilizzare il risultato per le successive operazioni

    come posso fare?
    esiste già qualcosa che potrei sfruttare?
    oppure devo farmi manualmente io il metodo che faccia questo?
    e se così fosse logicamente non riesco a capire come dovrei fare, potreste darmi un aiutino?
    grazie mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ci sono parser per espressioni matematiche già pronti per l'uso. Fai una ricerca qui sul forum (se n'è parlato, o ne è stato citato uno, qualche settimana fa e sicuramente più tempo addietro) o più in generale in internet

    Google - java math parser
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    grazie mille non ne ero a conoscenza
    provo

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Valuta che sia davvero il caso di utilizzare qualcosa di esterno, se devi solo gestire il caso che hai descritto è davvero semplice... prendi il testo, ci togli gli spazi, lo suddividi usando come delimitatore il '+', converti tutti i token a numeri e li sommi...

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    si in effetti deve fare solo questo, non si verificano mai casi differenti
    non ci sono spazi
    il punto è che c'è sempre la questione che non sò gestire e cioè
    o l'utente inserisce un solo double
    oppure un espressione di quel tipo

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da AspxTM
    si in effetti deve fare solo questo, non si verificano mai casi differenti
    non ci sono spazi
    il punto è che c'è sempre la questione che non sò gestire e cioè
    o l'utente inserisce un solo double
    oppure un espressione di quel tipo
    Se lo tratti come ti ho detto, non cambia nulla, avrai semplicemente un solo token (il numero), che sarà il risultato dell'espressione.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    quindi dovrebbe essere così
    stilo un esempio di codice:

    codice:
    public double calcolaRisultato(String parameter)
    {
        double somma=0;
    
        String[] str = parameter.split("+");
        for(i=0;i<str.lenght;i++)
             somma+=Double.parseDouble(str[i]);
    
       return somma;
    }
    giusto?

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    up

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da AspxTM
    up
    Ti sarebbe bastato provarlo per vedere che non funziona e solleva eccezioni, e guardare la documentazione per accorgerti che stai utilizzando male il metodo split, che si aspetta un'espressione regolare.
    Comunque anche usandolo correttamente dovresti prevedere errori, per esempio più '+' consecutivi, caratteri alfabetici, conversioni in numero che vanno male e cose del genere.

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    56
    oggi ho avuto un pò di tempo e cercato ancora su google altro materiale

    posto così qualcuno che legge può trovarlo utile

    esistono 2 possibili varianti lo StringTokenizer e lo split
    solo che per motivi di compatibilità lo StringTozeniker è sconsigliato
    quindi mi sono concentrato sullo split

    come avevo postato io il codice come mi hai fatto notare solleva delle eccezioni
    il codice corretto per quello che dovevo fare è questo

    codice:
    	public double calcolaRisultato(String parameter)
    	{
    	    double somma=0;
    
    	    String[] str = parameter.split("[+]");
    	    for(int i=0;i<str.length;i++)
    	         somma+=Double.parseDouble(str[i]);
    
    	   return somma;
    	}
    se inserisco per esempio
    codice:
    15+4+0.50+0.20+500+5.345
    restituisce correttamente l'output
    le uniche situazioni particolari che ho dovuto gestire perchè dava problemi erano
    codice:
    10++5
    e anche
    codice:
    +10+5
    mentre questa
    codice:
    15+5+
    viene automaticamente gestita senza problemi

    non ho provato a gestire situazione del tipo
    codice:
    10 +  5
    oppure
    codice:
    106k+56of+sedici
    per il semplice fatto che mi sembrava superfluo
    nel programma che ho progettato è chiesto esplicitamente che l'utente debba inserire solo double
    se sbaglia semplicemente non fa niente e il mancato output del programma fà capire all'utente che ha sbagliato a inserire l'input

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.