String para Double

4 respostas
T
Bom pessoal é o seguinte


estou escrevendo um programa que pede para o usuário 2 números com casas decimais 0,00


o problema é que quando coloco o número quebrado 0,00


ele da um erro


ava.lang.NumberFormatException: 55,5


	at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1213)


	at java.lang.Double.parseDouble(Double.java:201)


	at Combustivel.main(Combustivel.java:36)


Bom o programa esta abaixo


import java.text.DecimalFormat;


import javax.swing.JOptionPane;








public class Combustivel {


	public static void main(String args[]) {





	double tanqCont = 0 ,  // contador de tanques


		kmCont = 0 ,        // contador de quilometragem


		tanqValor,          // valor dos tanques


		kmValor,       		// valor das quilometragens


		somaTanq = 0,  		// soma dos tanques


		somaKm = 0,    		// soma das quilometragens


		media = 0;     		// média Km/l


		


		String entradac ,  // String de entrada de nota do usuário


			   entradakm; // String para entrada de Km


			


	


	// Fase de Processamento


	


	


	


	 entradac = JOptionPane.showInputDialog( " Entre com o valor de litros,-1 para sair ");


	 entradakm = JOptionPane.showInputDialog( " Entre com o valor de quilometragem , -1 para sair");


				   	


	 double d = Double.parseDouble(entradac);


	


	


	tanqValor = Double.parseDouble(entradac);


	kmValor = Double.parseDouble(entradakm);


	


	


		while ( tanqValor != -1)   			// Enquanto variável tanqValor for diferente de -1(sentinela)


		{ 	


			


			somaTanq = somaTanq + tanqValor;  	// somatória dos valores de combustível


			tanqCont ++;            			// adicionando 1 ao contador comb.


			


			somaKm = somaKm + kmValor;    	    // somatória dos valores de quilometragem


			kmCont ++;							// adiciona 1 ao contador km


		


		


		entradac = JOptionPane.showInputDialog( " Entre com o valor de litros, " );


	entradakm = JOptionPane.showInputDialog( " Entre com o valor de quilometragem , -1 para sair");


				   	


	


	tanqValor = Double.parseDouble(entradac);


	kmValor = Double.parseDouble(entradakm);


			


			


		}


		


		// Fase de conclusão


			


			


		DecimalFormat twoDigits = new DecimalFormat ("0.00"); // cria Objeto para a String sair com 2 casas decimais	


			


			if (tanqCont != 0 )


				{	


					media = (double) somaKm / somaTanq; // calculo da média


					


					JOptionPane.showMessageDialog


					( null , " A média dos tanques é : " + twoDigits.format (media) + "n" +


					"Litros de combustível = " + twoDigits.format( somaTanq ) + "n" +


					"Quilometragem Total = " + twoDigits.format( somaKm ) + "n" +


					"Somatória de tanques = " + kmCont , "Média dos tanques", JOptionPane.INFORMATION_MESSAGE);





				}


				


			else





			JOptionPane.showMessageDialog


			(null, "Dados incompletos para cálculo ", "Media dos Tanques", JOptionPane.INFORMATION_MESSAGE );





	}


}








quem puder me ajudar eu agradeço muitissimo !!!


Obrigado

4 Respostas

V

Experimente substituir 0,00 por 0.0 ou seja a virgula por um ponto .





Volnei Granado Munhoz :wink:

J
Engraçado… eu testei o seu programa usando a seguinte versão de Java:





java version "1.4.1_01"


Java™ 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)


Java HotSpot™ Client VM (build 1.4.1_01-b01, mixed mode)





E funcionou. Eu achava que não era para funcionar. Quem se habilita a explicar? Será que é o Locale? Estou usando a versão de Java para todos os idiomas. Vou ver a documentação da classe DecimalFormat  agora. E, thiago_louzada, que versão vc está usando?





valeuz…





jack_-<em>ganzha




[ Esta mensagem foi editada por: jack</em>-_ganzha em 12-03-2003 17:32 ]
T

é estranho mas a versão é a mesma que a sua

estou baixando a nova

usei o Eclipse para fazer esse programa

!!!

A propósito troquei a virgula por ponto e não rolou …

deu o mesmo erro mensionado

[ Esta mensagem foi editada por: thiago_louzada em 12-03-2003 17:47 ]

J
Eu acabei de testar com a seguinte versão:





java version "1.3.1"


Java 2 Runtime Environment, Standard Edition (build 1.3.1-b24)


Java HotSpot Client VM (build 1.3.1-b24, mixed mode)





E tambem não deu erro. O Locale para o Brasil é com "," mesmo. Basta rodar essa classe sugerida na Documentação para ver os Locales disponiveis.





import java.text.*;


import java.util.Locale;


public class Local {


	public static void main(String[] args) {


		Locale[] locales = NumberFormat.getAvailableLocales();


		double myNumber = -1234.56;


		NumberFormat form;


		for (int j=0; j<1; ++j) {


		    System.out.println("FORMAT");


		    for (int i = 0; i < locales.length; ++i) {


		        if (locales[i].getCountry().length() == 0) {


		           continue; // Skip language-only locales


		        }


		        System.out.print(locales[i].getDisplayName());


		        switch (j) {


		        case 0:


		            form = NumberFormat.getInstance(locales[i]); break;


		        case 1:


		            form = NumberFormat.getIntegerInstance(locales[i]); break;


		        case 2:


		            form = NumberFormat.getCurrencyInstance(locales[i]); break;


		        default:


		            form = NumberFormat.getPercentInstance(locales[i]); break;


		        }


		        if (form instanceof DecimalFormat) {


		            System.out.print(": " + ((DecimalFormat) form).toPattern());


		        }


		        System.out.print(" -> " + form.format(myNumber));


		        try {


		            System.out.println(" -> " + form.parse(form.format(myNumber)));


		        }	catch (ParseException e) {


		        	System.out.println("nException: " + e.getClass().getName() + "n");


		        }


		    }


		}


	}


}





Agora, thiago, poste novamente o erro com o codigo exatamente igual ao daqui. Assim a gente pode ver em que linha está. Acho que vc inseriu algum comentario ou uma quebra de linha e  a linha em que a exception está ocorrendo está em branco.





valeuz

[ Esta mensagem foi editada por: jack_-_ganzha em 12-03-2003 18:14 ]
Criado 12 de março de 2003
Ultima resposta 12 de mar. de 2003
Respostas 4
Participantes 3