HTML.it è il sito italiano del web publishing

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



scegli un altro forum
    Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ:

MSN:

Skype:


[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
Citazione:
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

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 20-05-2012 13:21
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Andrea1979
Utente di HTML.it



Registrato il: Aug 2002

Provenienza:

Messaggi: 7876


ICQ :

MSN :

Skype :


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"

Segnala ad un moderatore | IP: Collegato | Permalink

Andrea1979 è offline Old Post 20-05-2012 13:47
Clicca qui per vedere il profilo dell'utente Andrea1979 Clicca qui per inviare all'utente Andrea1979 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Andrea1979 Aggiungi l'utente Andrea1979 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


grazie mille non ne ero a conoscenza
provo

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 20-05-2012 13:48
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Kaamos
Utente di HTML.it



Registrato il: Dec 2009

Provenienza: Genova

Messaggi: 605


ICQ :

MSN :

Skype :


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...

Segnala ad un moderatore | IP: Collegato | Permalink

Kaamos è offline Old Post 20-05-2012 15:30
Clicca qui per vedere il profilo dell'utente Kaamos Clicca qui per inviare all'utente Kaamos un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Kaamos Aggiungi l'utente Kaamos alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


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

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 20-05-2012 15:33
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Kaamos
Utente di HTML.it



Registrato il: Dec 2009

Provenienza: Genova

Messaggi: 605


ICQ :

MSN :

Skype :


Citazione:
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.

Segnala ad un moderatore | IP: Collegato | Permalink

Kaamos è offline Old Post 20-05-2012 15:55
Clicca qui per vedere il profilo dell'utente Kaamos Clicca qui per inviare all'utente Kaamos un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Kaamos Aggiungi l'utente Kaamos alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


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?

Ultima modifica ad opera dell'utente AspxTM il 20-05-2012 alle 16:49

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 20-05-2012 16:37
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


up

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 23-05-2012 17:17
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Kaamos
Utente di HTML.it



Registrato il: Dec 2009

Provenienza: Genova

Messaggi: 605


ICQ :

MSN :

Skype :


Citazione:
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.

Segnala ad un moderatore | IP: Collegato | Permalink

Kaamos è offline Old Post 23-05-2012 18:46
Clicca qui per vedere il profilo dell'utente Kaamos Clicca qui per inviare all'utente Kaamos un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Kaamos Aggiungi l'utente Kaamos alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


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

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 26-05-2012 12:32
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Kaamos
Utente di HTML.it



Registrato il: Dec 2009

Provenienza: Genova

Messaggi: 605


ICQ :

MSN :

Skype :


Citazione:
Originariamente inviato da AspxTM
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


Per gli ultimi due casi, se non vuoi perderci tempo, cancella brutalmente dalla StringBuilder (o StringBuffer se necessiti di sincronizzazione) tutti gli spazi e più in generale tutti i caratteri che non sono cifre, operatori di somma o delimitatori fra parte intera e frazionaria. Sempre meglio che fregarsene secondo me, e bastano poche ricghe.

Segnala ad un moderatore | IP: Collegato | Permalink

Kaamos è offline Old Post 26-05-2012 14:05
Clicca qui per vedere il profilo dell'utente Kaamos Clicca qui per inviare all'utente Kaamos un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Kaamos Aggiungi l'utente Kaamos alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
AspxTM
Utente di HTML.it



Registrato il: Feb 2012

Provenienza:

Messaggi: 32


ICQ :

MSN :

Skype :


giusto
non avevo pensato a questa alternativa
grazie

Segnala ad un moderatore | IP: Collegato | Permalink

AspxTM è offline Old Post 26-05-2012 15:46
Clicca qui per vedere il profilo dell'utente AspxTM Clicca qui per inviare all'utente AspxTM un messaggio privato Visualizza ulteriori messaggi scritti dall'utente AspxTM Aggiungi l'utente AspxTM alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 05:32.     

    Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca