Visualizzazione dei risultati da 1 a 4 su 4

Discussione: problema parseDouble()

  1. #1

    problema parseDouble()

    Ciao a tutti.
    Dovrei realizzare una sequenza di frazioni in input ed in uscita la loro somma e la media.
    Per quanto riguarda la somma tutto ok.
    Per la media mi da il seguente errore:

    codice:
    Exception in thread "main" java.lang.NumberFormatException: For input string: "22/15"
        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
        at java.lang.Double.parseDouble(Double.java:510)
        at Compito1.main(Compito1.java:59)
    posto il codice

    codice:
    import prog.io.*;
    import prog.utili.*;
    
    public class Compito1 {
    
        public static void main(String[]args) {
        	
        	char scelta; 
        	
        	ConsoleInputManager in=new ConsoleInputManager();
        	ConsoleOutputManager out=new ConsoleOutputManager();
        	
        	
        	
        	out.print("Questo programma data una Sequenza di Frazioni all'ingresso, restituisce la somma e la media");
        	
        	Sequenza<Frazione> seq=new Sequenza<Frazione>();
           
        	int contasequenza=0;
        	do {
        		
        		 scelta=in.readChar("Vuoi Inserire altre Frazioni ? (s/n) ");
                 scelta= Character.toLowerCase(scelta);
            
        		switch (scelta){
        		
        		case 's':{
        			int num=in.readInt("Inserisci il numeratore: ");
        			int den=in.readInt("Inserisci il denominatore: ");
        			Frazione f= new Frazione(num,den);
        			seq.add(f);
        			contasequenza ++;
        			break;
        				  } 
        				  	
        		default: System.out.println ("Devi inserire s per una nuova frazione, n se non vuoi inserire");
        		
        		}
        		
        }while(scelta!='n');
        	
        Frazione somma=new Frazione(0); //DEfiniamo somma una Frazione che inizzializziamo all'inizio con zero
         double addendi=0;
       	for(Frazione frazioni:seq){
       		
       		
       		somma=somma.piu(frazioni) ;
       		addendi ++;
       		
       	} 
       		
        Double valoreSomma= Double.parseDouble(somma.toString());
        out.println("La somma delle frazioni presenti nella sequenza è : "+somma);	
       out.println("La media della sequenza di Frazioni è: "+(valoreSomma/addendi));	
        	
        	
        }
        
    }
    Come posso sistemarlo?

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

    Re: problema parseDouble()

    Originariamente inviato da 19pantarei75
    Dovrei realizzare una sequenza di frazioni in input ed in uscita la loro somma e la media.
    Per quanto riguarda la somma tutto ok.
    Per la media mi da il seguente errore:

    codice:
    Exception in thread "main" java.lang.NumberFormatException: For input string: "22/15"
    Double valoreSomma= Double.parseDouble(somma.toString());

    Come posso sistemarlo?
    Le classi del framework non sono in grado di "valutare" espressioni di quel tipo.

    E comunque per capire come risolvere, bisognerebbe vedere cosa fa Frazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie per aver risposto

    ecco la classe Frazione
    http://pighizzini.dico.unimi.it/jb/l.../Frazione.html


    io con
    codice:
    Double valoreSomma= Double.parseDouble(somma.toString());
    voglio trasofrmare la stringa (es. 4/3) in un double. per poi darlo in pasto all'espressione

    codice:
    out.println("La media della sequenza di Frazioni è: "+(valoreSomma/addendi));
    essendo ancehe addendi un double.

    ma non funziona

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,280
    Originariamente inviato da 19pantarei75
    ecco la classe Frazione
    http://pighizzini.dico.unimi.it/jb/l.../Frazione.html
    Ok ma quello è il "javadoc" ... io intendevo il sorgente (se fosse disponibile). Comunque qualcosa si capisce, ovviamente.


    Originariamente inviato da 19pantarei75
    io con
    codice:
    Double valoreSomma= Double.parseDouble(somma.toString());
    voglio trasofrmare la stringa (es. 4/3) in un double. per poi darlo in pasto all'espressione

    ma non funziona
    E io ripeto che i metodi del framework non possono "valutare" espressioni più complesse di quel tipo (cioè stringhe come "112+34", "24/4" o "324+5*5").

    Per quello che posso capire e intuire non devi fare alcun parseDouble. Alla fine di tutto quel ciclo for avrai un oggetto Frazione, frutto di tutte le somme con quel piu().

    Da questo oggetto Frazione semplicemente dovresti prendere numeratore e denominatore (sono 2 int) e fare tu la divisione. E nota: la divisione "floating-point" .... non "intera". Uno dei due operandi lo devi portare a float o double (dipende cosa vuoi).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.