O que está de errado em meu código em Java?[RESOLVIDO]

4 respostas
java
M

Já tentei isso:

package CalculandoIMC;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JTextField;

import javax.swing.JLabel;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import java.math.BigDecimal;

public class IMC extends JFrame {

private JLabel kg, volume, amc;
private JButton limpar, calcular;
private JTextField quilograma, altura, imc;
private BigDecimal a, b;

public IMC() {
    super("Calculando o IMC");
    setLayout(new FlowLayout());
    
    a = new BigDecimal(quilograma.getText());
    b = new BigDecimal(altura.getText());

    kg = new JLabel("Massa (KG):");
    add(kg);

    quilograma = new JTextField();
    quilograma.setEditable(true);
    add(quilograma);

    volume = new JLabel("Altura:");
    add(volume);
    altura = new JTextField();
    altura.setEditable(true);
    add(altura);

    amc = new JLabel("IMC");
    add(amc);

    calcular = new JButton("Calcular IMC");
    calcular.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            imc.setText("IMC: "+a.divide(b));
        }
    });
    imc = new JTextField();
    imc.setEditable(false);
    add(imc);
}

}

Classe Principal:
package CalculandoIMC;

import javax.swing.JFrame;

public class Principal {

public static void main(String[] args) {

IMC imc = new IMC();
imc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    imc.setSize(600, 600);
    imc.setVisible(true);
}

}

OBS.:<strong>O erro é na hora que eu executo,</strong> aparece:

“Exception in thread “main” java.lang.NullPointerException

at CalculandoIMC.IMC.(IMC.java:24)

at CalculandoIMC.Principal.main(Principal.java:7)

Java Result: 1”

OBS.²: Estou usando o Netbeans 8.0.2

4 Respostas

J

So da uma organizada na aparencia. Deixei bagunçado, por isso voce vai ter qeu maximinar a tela para ver o resutado do IMC.

package O SEU;

import java.awt.Component;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JTextField;

import javax.swing.JLabel;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class IMC extends JFrame {

public JLabel lbkg, lbvolume, lbamc;
public JTextField tfquilograma, tfaltura, tfimc;

private double kg, altura;

public IMC() {
super(“Calculando o IMC”);

this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(800, 150);
//Seta valores
altura  = 1.89;
kg = 80;

//Labels
lbkg = new JLabel("Massa (KG) / ");
lbkg.setSize(50,80);
add(lbkg);


lbvolume = new JLabel(" Altura");
lbvolume.setSize(100, 50);
add(lbvolume);

lbamc = new JLabel("IMC");
lbamc.setSize(50, 80);
add(lbamc);


//TextField
tfquilograma = new JTextField();
tfquilograma.setSize(100,50);
tfquilograma.getText();
tfquilograma.setEditable(true);
add(tfquilograma);

tfaltura = new JTextField();
tfaltura.setSize(100,50);
tfaltura.getText();
tfaltura.setEditable(true);
add(tfaltura);

JButton calcular = new JButton("Calcular IMC");
add(calcular);
calcular.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        double calcula = kg/altura;
        tfimc.setText("IMC: "+calcula);
      
    }
});
  
tfimc = new JTextField();
tfimc.setSize(100, 250);
add(tfimc);

}
}

package O SEU;

public class CalculandoIMC {

public static void main(String[] args) {

IMC imc;

imc = new IMC();
imc.setVisible(true);

}
}

J

Estava dando NullPointerExcepetion porque voce não havia setado nada para pode usar o >> a = new BigDecimal(quilograma.getText());

R

Cara corta essas duas linhas e cola dentro do teu actionPerformed que funciona, do jeito que estava os get estavam vindo nulos e o BigDecimal não encontrava nada na hora de puxar os dados.

a = new BigDecimal(quilograma.getText());
b = new BigDecimal(altura.getText());

M

te amo

Criado 23 de abril de 2016
Ultima resposta 23 de abr. de 2016
Respostas 4
Participantes 3