Java.lang.NumberFormatException: For input string: "jTextField1"

20 respostas
carloshsamaral

Pessoal to tentando terminar meu trabalho da faculdade mas encontro esse erro ai, vou selecionar no combo box a escolha ai clico e da erro ... tem como alguém me dar uma luz que eu não to conseguindo entender.

package guj;

import java.awt.EventQueue;

import javax.swing.JFrame;
import net.miginfocom.swing.MigLayout;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class CalculoAreasEVolumesFrame extends JFrame {
	private JLabel lblEntidadeGeomtrica;
	private JComboBox comboBox;
	private JLabel lblMedida_1;
	private JLabel lblMedida_2;
	private JLabel lblMedida_3;
	private JTextField textField_1;
	private JTextField textField_2;
	private JTextField textField_3;
	private JButton btnCalcular;
	private JButton btnLimpar;
	private JLabel lblResultado;
	private JLabel lblValor;
	private Calculo c = new Calculo();
	double base, altura, comprimento;
	String result;
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CalculoAreasEVolumesFrame frame = new CalculoAreasEVolumesFrame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CalculoAreasEVolumesFrame() {
		setTitle("Calcular \u00C1reas e Volumes");
		setBounds(100, 100, 450, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setLayout(
				new MigLayout("", "[][grow]", "[][][][][][]"));
		getContentPane().add(getLblEntidadeGeomtrica(),
				"cell 0 0,alignx trailing");
		getContentPane().add(getComboBox(), "cell 1 0,growx");
		getContentPane().add(getLblMedida_1(), "cell 0 1,alignx trailing");
		getContentPane().add(getTextField_1(), "cell 1 1,growx");
		getContentPane().add(getLblMedida_2(), "cell 0 2,alignx trailing");
		getContentPane().add(getTextField_2(), "cell 1 2,growx");
		getContentPane().add(getLblMedida_3(), "cell 0 3,alignx trailing");
		getContentPane().add(getTextField_3(), "cell 1 3,growx");
		getContentPane().add(getBtnCalcular(), "flowx,cell 0 4,span 2,center");
		getContentPane().add(getBtnLimpar(), "cell 0 4");
		getContentPane().add(getLblResultado(), "cell 0 5,alignx trailing");
		getContentPane().add(getLblValor(), "cell 1 5");

	}

	private JLabel getLblEntidadeGeomtrica() {
		if (lblEntidadeGeomtrica == null) {
			lblEntidadeGeomtrica = new JLabel("Entidade geom\u00E9trica:");
		}
		return lblEntidadeGeomtrica;
	}

	private JComboBox getComboBox() {
		if (comboBox == null) {
			comboBox = new JComboBox();
			comboBox.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (comboBox.getSelectedItem().equals("Tri\u00E2ngulo")) {
						lblMedida_1.setText("Base");
						lblMedida_2.setText("Altura");
						lblMedida_3.setText("");
						lblMedida_3.setVisible(false);
						textField_1.setEnabled(true);
						textField_2.setEnabled(true);
						textField_3.setEnabled(false);
						textField_3.setVisible(false);
						base = Double.valueOf(lblMedida_1.getText());
						altura = Double.valueOf(lblMedida_2.getText());
						result = String.valueOf(c.areaTrinagulo(base, altura));
						lblResultado.setText("Área = "+result);
					} else if (comboBox.getSelectedItem().equals("Quadrado")) {
						lblMedida_1.setText("Lado");
						lblMedida_2.setText("");
						lblMedida_3.setText("");
						textField_1.setEnabled(true);
						textField_2.setEnabled(false);
						textField_3.setEnabled(false);
						textField_2.setVisible(false);
						textField_3.setVisible(false);
						lblResultado.setText("Área = ");
					} else if (comboBox.getSelectedItem().equals(
							"Paralelepipedo")) {
						lblMedida_1.setText("Largura");
						lblMedida_2.setText("Altura");
						lblMedida_3.setText("Comprimento");
						textField_1.setEnabled(true);
						textField_2.setEnabled(true);
						textField_3.setEnabled(true);

						lblResultado.setText("Volume = ");
					} else if (comboBox.getSelectedItem().equals("Cilindro")) {
						lblMedida_1.setText("Base");
						lblMedida_2.setText("Altura");
						lblMedida_3.setText("");
						textField_1.setEnabled(true);
						textField_2.setEnabled(false);
						textField_3.setEnabled(false);
						textField_3.setVisible(false);
						lblResultado.setText("Volume = ");
					} else if (comboBox.getSelectedItem().equals("Prisma")) {
						lblMedida_1.setText("Base");
						lblMedida_2.setText("Altura");
						lblMedida_3.setText("");
						textField_1.setEnabled(true);
						textField_2.setEnabled(false);
						textField_3.setEnabled(false);
						textField_3.setVisible(false);
						lblResultado.setText("Volume = ");
					}
				}
			});
			comboBox.setModel(new DefaultComboBoxModel(new String[] {
					"Escolha...", "Tri\u00E2ngulo", "Paralelepipedo",
					"Cilindro", "Prisma", "Cilindro", "Prisma" }));
		}
		return comboBox;
	}

	private JLabel getLblMedida_1() {
		if (lblMedida_1 == null) {
			lblMedida_1 = new JLabel("Medida 1");
		}
		return lblMedida_1;
	}

	private JLabel getLblMedida_2() {
		if (lblMedida_2 == null) {
			lblMedida_2 = new JLabel("Medida 2");
		}
		return lblMedida_2;
	}

	private JLabel getLblMedida_3() {
		if (lblMedida_3 == null) {
			lblMedida_3 = new JLabel("Medida 3");
		}
		return lblMedida_3;
	}

	private JTextField getTextField_1() {
		if (textField_1 == null) {
			textField_1 = new JTextField();
			textField_1.setColumns(10);
		}
		return textField_1;
	}

	private JTextField getTextField_2() {
		if (textField_2 == null) {
			textField_2 = new JTextField();
			textField_2.setColumns(10);
		}
		return textField_2;
	}

	private JTextField getTextField_3() {
		if (textField_3 == null) {
			textField_3 = new JTextField();
			textField_3.setColumns(10);
		}
		return textField_3;
	}

	private JButton getBtnCalcular() {
		if (btnCalcular == null) {
			btnCalcular = new JButton("Calcular!");
		}
		return btnCalcular;
	}

	private JButton getBtnLimpar() {
		if (btnLimpar == null) {
			btnLimpar = new JButton("Limpar");
		}
		return btnLimpar;
	}

	private JLabel getLblResultado() {
		if (lblResultado == null) {
			lblResultado = new JLabel("Resultado:");
		}
		return lblResultado;
	}

	private JLabel getLblValor() {
		if (lblValor == null) {
			lblValor = new JLabel("valor");
		}
		return lblValor;
	}
}
package guj;

public class Calculo {
    public static double areaTrinagulo(double base, double altura) {
        return base * altura;
    }

    public static double volumeQuadrado(double l) {
        return l * l * l;
    }

    public static double volumePara(double l, double h, double c) {
        return l * h * c;
    }

    public static double volumeCili(double base, double altura) {
        return 3.14 * ((base * base) * altura);
    }

    public static double volumePrisma(double base, double altura) {
        return base* altura;
    }
}

20 Respostas

R

Esse erro ai ta informando que a conversao de string para numeros falhou.

Provavelmente voce pode ter posto string no textfield citado, e que na verdade so deveria conter numeros.

carloshsamaral

como assim não entendi… tipo assim, eu executo o programa, e no combo eu seleciono a opção do triangulo, ele da o erro direto e não me deixa fazer nada, tenho que fechar o programa

Elizeu_Santos

Exatamente o que o amigo acima falou, apenas um detalhe: não encontrei o “jtextfield1”, alterou o código???

E

Rapaiz, não é para você botar esse código no método que faz a seleção do combo. É para fazer as contas no botão de “Calcular”. Além disso, rapaiz, você sabe o que tem “lblMedida_1”? Ele tem uma outra coisa, não os dados que você quer calcular. Ele tem esse nome de “lblMedida_1” não por acaso - é que ele é só um rótulo, não um valor de entrada de dados.

base = Double.valueOf(lblMedida_1.getText());  
                        altura = Double.valueOf(lblMedida_2.getText());  
                        result = String.valueOf(c.areaTrinagulo(base, altura));  
                        lblResultado.setText("Área = "+result);
E

O código que postei está incompleto de propósito. Se entender como é que ele funciona, dá para você usá-lo sem problemas. Senão é melhor fazer um do zero.

carloshsamaral

Me corrija se eu estiver errado…

base vai ser o valor do lblmedia_1 convertido para double
da altura a mesma coisa sendo do 2 e o result vai ser o valor convertido do calculo area triangulo que vai receber os dados altura e base; depois seria para exibir a area…

ta tudo bem, to perdidinho com essa parada :confused: tenso demais, o resto dos trabalhos eu fiz só que toda hora da esse erro, já refiz e nada … só quero entender o pq desse erro como vcs estão me dizendo não to conseguindo entender …

Ta entendiiii ! Eu não tenho que pegar o valor do lblMedia, isso ai é o valor do lado do TextField … Ta, fiz um teste aqui agora setando os valores, eu posso por o scanner dentro do textfield ? o.O

Elizeu_Santos

scanner dentro do textfield???
de onde saiu esta ideia?

carloshsamaral

Desespero ? Pode ser ? Trabalho pra entregar na faculdade hoje, se fosse Web ou OO+SQL eu fazia tranquilo, mas GUI, sou a desgraça em pessoa ahuahaua

R

rof20004:

java.lang.NumberFormatException: For input string: “jTextField1”

Esse erro ai ta informando que a conversao de string para numeros falhou.

Provavelmente voce pode ter posto string no textfield citado, e que na verdade so deveria conter numeros.

Mano, se for esse erro ainda, nao perca tempo, procure o jTextField1 e analise, esse é erro de conversao, voce ta usando algum *.parse em um texto que nao é somente de 1 tipo.

E

Não sei se o código que você está testando é o que você postou. Mas se você fosse um pouco mais atento, veria que você está fazendo uma coisa bem errada. Peguei só o trecho de código que você postou e que é relevante.

lblMedida_1.setText("Base");  
...
                        base = Double.valueOf(lblMedida_1.getText());

Você viu aqui que ele está tentando converter o valor de lblMedida_1, que é o texto “Base”. Então isso vai obviamente causar um erro, que é o tal do “NumberFormatException”

R

hehe, voce deve ta com sono de tanto estudar carloshsamaral… :smiley:

carloshsamaral

pior de tudo que não é sono de estudar e sim de vadiagem :confused: tenho que sair dessa vida … entanglement eu entendi oq vc falou sim :slight_smile: já arrumei ele

base = Double.valueOf(textField_1.getText()).doubleValue(); altura = Double.valueOf(textField_1.getText()).doubleValue(); result = String.valueOf(c.areaTrinagulo(base, altura));

mas ainda da erro :frowning: rof20004 agora da erro de “empty String” se eu colocar textField_1 setando ele ele vai, obtendo direto da esse erro … acho q vou entragar o trabalho sem pegar os dados pelo text :confused:

tipo assim textField_1.setText("3"); textField_2.setText("4");

E

Carinha, não lhe disse que esse código não é para ficar nesse ponto que está no seu código, e sim no ActionListener do botão Calcular?
(Crie um ActionListener para o botão calcular).

Elizeu_Santos

entanglement:
Não sei se o código que você está testando é o que você postou. Mas se você fosse um pouco mais atento, veria que você está fazendo uma coisa bem errada. Peguei só o trecho de código que você postou e que é relevante.

lblMedida_1.setText("Base");  
...
                        base = Double.valueOf(lblMedida_1.getText());

Você viu aqui que ele está tentando converter o valor de lblMedida_1, que é o texto “Base”. Então isso vai obviamente causar um erro, que é o tal do “NumberFormatException”

nem tinha olhado o código todo. Isso ai poderia causar uma fatalExplosionOfCPU

Elizeu_Santos

sem pegar os dados pelo text? você quer pegar um determinado valor do text? não tem método para isso carlos henrique???

Elizeu_Santos
carloshsamaral

Acho que consegui … parou de dar erro, só preciso ver se eu consigo exibir a msg

Elizeu_Santos

http://www.tiexpert.net/programacao/java/joptionpane.php

Elizeu_Santos

Google Rules!

R

Olha, eu nunca usei o doubleValue, na verdade, so uso isso no iReport, heheheh…tenta fazer a conversao sem o doubleValue.

base = Double.valueOf(textField_1.getText());

Outra coisa, a variavel base tem que ser do tipo double ne :smiley:

Criado 3 de dezembro de 2012
Ultima resposta 3 de dez. de 2012
Respostas 20
Participantes 4