Problema em receber um número com ,

6 respostas
E

galera, estou com um problema em que tenho um número com vírgula dá o seguinte erro.

Exception occurred during event dispatching:
java.lang.NumberFormatException: For input string: "99,9"
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at java.lang.Double.parseDouble(Unknown Source)
	at views.JanelaLocacao.buscarFilmePorParametros(JanelaLocacao.java:898)
	at views.JanelaLocacao.buscarAction(JanelaLocacao.java:842)
	at views.JanelaLocacao.access$1(JanelaLocacao.java:837)
	at views.JanelaLocacao$1.actionPerformed(JanelaLocacao.java:224)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.Dialog$1.run(Unknown Source)
	at java.awt.Dialog$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.Dialog.show(Unknown Source)
	at java.awt.Component.show(Unknown Source)
	at java.awt.Component.setVisible(Unknown Source)
	at java.awt.Window.setVisible(Unknown Source)
	at java.awt.Dialog.setVisible(Unknown Source)
	at views.MenuOpcoes$6.actionPerformed(MenuOpcoes.java:265)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.AbstractButton.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Segue o código
public List<filme_locadora> buscarFilmePorParametros(Integer cod_filme, String titulo) {

		List<filme_locadora> filme = new ArrayList<filme_locadora>();

		StringBuilder jpql = new StringBuilder("SELECT p FROM filme_locadora p WHERE p.cod_filme IS NOT NULL");//("SELECT p FROM cliente_locadora p WHERE p.cod_cli = ? OR p.nome_cli LIKE ?" );

		if (cod_filme != null && !cod_filme.equals("")) {
			jpql.append(" AND p.cod_filme = " + cod_filme);

		}

		else {
			JOptionPane.showMessageDialog(null, "Entrei no String!");
			jpql.append(" AND p.titulo =" + titulo);

		}

		try {
			EntityManager em = f.createEntityManager();
			Query query = em.createQuery(jpql.toString());
			filme = query.getResultList();
		} catch (Exception e) {
			JOptionPane.showMessageDialog(null, "Cai no erro!");
			e.printStackTrace();
		}

		///atualizando valor total
		for (filme_locadora filme1 : filme) {

			double valor = Double.parseDouble(valorf.getText());
			valortotal = valortotal + valor;
			valor_total.setText(String.valueOf(valortotal).trim());

		}

		return filme;

	}

6 Respostas

M

Para se converter o valor deve-se ter um número com ponto e não com vírgula. Portanto, “99.9” funcionaria.

E

mas como eu vou cadastrar um filme com o valor com “ponto”, porque o valor monetário não é com vírgula?

M

No Brasil sim. Mas em muitos outros lugares no mundo não: o ponto é usado.

Inclusive, qual o tipo de campo que armazena o valor no banco de dados? Se for um DECIMAL ele usa ponto também!

E

eu coloquei String, pq estou usando o hibernate
mais deixa eu te perguntar, tem como eu fazer esse erro parar, para aceitar a vírgula?

M

De Hibernate eu não manjo. Talvez outro possa te ajudar. Mas há como usar o ponto mesmo (isso permite usar o tipo de campo correto no BD).

É só pegar a String com o valor e usar o método replace:

valor.replace(',', '.');

Isso deixa o número com ponto, o que permite armazená-lo em campos DECIMAL ou em variáveis do tipo double ou float.

E

muito obrigado, deu certo.

Criado 2 de dezembro de 2009
Ultima resposta 3 de dez. de 2009
Respostas 6
Participantes 2