Acredito que seja um erro simples, é o seguinte, eu tenho 3 campos pra digitar no JTextField
, sendo que o primeiro é a área, o segundo é a base e o terceiro é a hipotenusa. Eu só posso aceitar que o usuário digite 2 valores, se ele digitar a área e a base eu tenho que calcular a hipotenusa. Se digitar a hipotenusa e a área, eu tenho que calcular a base…
Está dando erro pra mim quando o usuário digita 1 ou nenhum valor, o resto está dando certo.
Observação: o campo JTextfield
só vai aceita números, então não precisa se preocupar com isso, e não precisem se preocupar se a fórmula está correta.
package aulaSwing;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Hipotenusa extends TelaPadrao implements ActionListener {
private double area, base, hipotenusa;
private JTextField a, b;
private JTextField h = null;
private JLabel label = new JLabel();
private JButton botao;
public Hipotenusa() {
setTitle("Calcular hipotenusa");
Container container = getContentPane();
setBounds(200, 150, 850, 500);
a = criaCampoNumerico("Altura", 30, 140);
saltaLinha();
b = criaCampoNumerico("Base", 30, 140);
saltaLinha();
h = criaCampoNumerico("Hipotenusa", 30, 140);
botao = new JButton("Calcular");
botao.setBounds(300, 200, 120, 25);
container.add(botao);
botao.addActionListener(this);
label.setBounds(150, 120, 220, 120);
container.add(label);
label.setBackground(Color.BLACK);
setVisible(true);
}
public static void main(String[] args) {
new Hipotenusa();
}
public void actionPerformed(ActionEvent e) {
double aux;
if (a.getText() !="" && b.getText() !="" && h.getText().equals("")) {
System.out.println(a.getText());
area = Double.parseDouble(a.getText());
base = Double.parseDouble(b.getText());
aux = (Math.pow(area, 2) + Math.pow(base, 2));
hipotenusa = Math.sqrt(aux);
label.setText("Hipotenusa: " + hipotenusa);
System.out.println(b.getText());
}
else if (a.getText() !="" && h.getText() !="" && b.getText().equals("")) {
area = Double.parseDouble(a.getText());
hipotenusa = Double.parseDouble(h.getText());
base = area * hipotenusa;
label.setText("base: " + base);
System.out.println(h.getText());
}
else if (b.getText() !="" && h.getText() !="" && a.getText().equals("")) {
base = Double.parseDouble(b.getText());
hipotenusa = Double.parseDouble(h.getText());
area = base * hipotenusa;
label.setText("area: " + area);
System.out.println(b.getText());
}
else
label.setText("Digite em 2 campos!");
}
}