Boa noite. Estou tendo dificuldades em um exercício, preciso fazer uma calculadora. O layout já foi passado pelo professor, eu realmente só preciso fazer a programação dos botões.
O esquema da calculadora é: Digitar um numero, depois o outro, em seguida escolher a operação desejada. A dúvida é: Quando escolho operações que só precisam de um numero (Ex:Raiz), ele dá erro pedindo o segundo numero, sendo que o segundo numero não é necessário. Alguém pode me ajudar? Segue o código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Ex7 extends JFrame implements ActionListener{
JLabel LNum1,LNum2,LResultado,LBranco1,LBranco2;
JButton BSoma, BSubtrai, BMultiplica, BDivide, BQuad, BPot, BRaiz, BLimpa;
JTextField TNum1,TNum2,TResultado;
public static void main(String args[]){
JFrame GUI = new Ex7();
GUI.setVisible(true);
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Ex7(){
setTitle("Segundo Exercicio");
setSize(400,250);
setLocation(200,200);
getContentPane().setBackground(new Color(220,220,220));
setLayout(new GridLayout(4,4));
LNum1 = new JLabel("1°Núm.");
LNum1.setForeground(Color.blue);
LNum1.setFont(new Font("",Font.PLAIN,16));
LNum2 = new JLabel("2°Núm.");
LNum2.setForeground(Color.blue);
LNum2.setFont(new Font("",Font.PLAIN,16));
LResultado = new JLabel("Resultado");
LResultado.setFont(new Font("",Font.PLAIN,16));
LResultado.setForeground(Color.red);
LBranco1 = new JLabel("");
LBranco2 = new JLabel("");
BSoma = new JButton ("+");
BSoma.addActionListener(this);
BSubtrai = new JButton ("-");
BSubtrai.addActionListener(this);
BMultiplica = new JButton ("x");
BMultiplica.addActionListener(this);
BDivide = new JButton ("/");
BDivide.addActionListener(this);
BQuad = new JButton ("Quadrado");
BQuad.addActionListener(this);
BPot = new JButton ("Potência");
BPot.addActionListener(this);
BRaiz = new JButton ("Raiz");
BRaiz.addActionListener(this);
BLimpa = new JButton ("Limpar");
BLimpa.addActionListener(this);
BLimpa.setBackground(Color.red);
BLimpa.setForeground(Color.white);
TNum1 = new JTextField();
TNum2 = new JTextField();
TResultado = new JTextField();
TResultado.setEditable(false);
add(LNum1);
add(TNum1);
add(BSoma);
add(BSubtrai);
add(LNum2);
add(TNum2);
add(BMultiplica);
add(BDivide);
add(LResultado);
add(TResultado);
add(BQuad);
add(BPot);
add(LBranco1);
add(LBranco2);
add(BRaiz);
add(BLimpa);
}
public void actionPerformed(ActionEvent evento){
if (evento.getSource()==BLimpa)
{
TNum1.setText("");
TNum2.setText("");
TResultado.setText("");
return;
}
float num1=0,num2=0,resultado=0;
try
{
num1 = Float.parseFloat(TNum1.getText());
num2 = Float.parseFloat(TNum2.getText());
}
catch (NumberFormatException erro)
{
TResultado.setText("Erro");
return;
}
if (evento.getSource()==BSoma)
resultado = num1 + num2;
if (evento.getSource()==BSubtrai)
resultado = num1 - num2;
if (evento.getSource()==BMultiplica)
resultado = num1 * num2;
if (evento.getSource()==BDivide)
resultado = num1 / num2;
if (evento.getSource()==BQuad)
resultado = num1 * num1;
if (evento.getSource()==BPot)
resultado = (float) Math.pow(num1, num2);
if (evento.getSource()==BRaiz)
resultado = (float) Math.sqrt(num1);
TResultado.setText(String.valueOf(resultado));
}
}