Olá, estou tentando criar uma calculadora em java (como fui orientada no meu curso). No material que eu tenho é dado um exemplo de cada passo da criação do código e pede para irmos completando. No caso das operações o exemplo que tinha era o da SOMA e pedia para fazer as outras. Consegui fazer SUBTRACAO e RAIZQ (raíz quadrada), mas não consigo fazer nem DIVISAO nem MULTIPLICACAO. Quando clico no botão da operação era pra continuar na tela o número que eu acabei de digitar e esperar eu digitar o próximo número, só que em vez disso aparece “0.0” Alguém pode me dizer o que está errado?
public class Calculadora extends javax.swing.JFrame {
private double v1;
private double v2;
private Operacao operacao = Operacao.NENHUMA;
private boolean limpar;
public void operar(){
switch (operacao){
case NENHUMA:
v1 = v2;
break;
case SOMA:
v1 = v1+v2;
break;
case SUBTRACAO:
v1 = v2-v1;
break;
case DIVISAO:
v1= v1/v2;
break;
case MULTIPLICACAO:
v1 = v1 * v2;
break;
case RAIZQ:
v1 = Math.sqrt(v2);
}
visor.setText(String.valueOf(v1));
limpar = true;
}
public void limpar(){
if (limpar){
visor.setText("");
}
limpar = false;
}
public enum Operacao {
NENHUMA, SOMA, SUBTRACAO,DIVISAO,MULTIPLICACAO, RAIZQ
}
/**
* Creates new form Calculadora
*/
public Calculadora() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
visor = new javax.swing.JTextField();
zero = new javax.swing.JButton();
ponto = new javax.swing.JButton();
um = new javax.swing.JButton();
dois = new javax.swing.JButton();
tres = new javax.swing.JButton();
igual = new javax.swing.JButton();
quatro = new javax.swing.JButton();
cinco = new javax.swing.JButton();
seis = new javax.swing.JButton();
mais = new javax.swing.JButton();
sete = new javax.swing.JButton();
oito = new javax.swing.JButton();
nove = new javax.swing.JButton();
menos = new javax.swing.JButton();
del = new javax.swing.JButton();
div = new javax.swing.JButton();
mult = new javax.swing.JButton();
raizq = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
visor.setEditable(false);
visor.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
visor.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
zero.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
zero.setText("0");
zero.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
zeroMouseClicked(evt);
}
});
ponto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
ponto.setText(".");
ponto.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pontoActionPerformed(evt);
}
});
um.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
um.setText("1");
um.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
umActionPerformed(evt);
}
});
dois.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
dois.setText("2");
dois.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
doisActionPerformed(evt);
}
});
tres.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
tres.setText("3");
tres.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tresActionPerformed(evt);
}
});
igual.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
igual.setText("=");
igual.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
igualActionPerformed(evt);
}
});
quatro.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
quatro.setText("4");
quatro.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
quatroActionPerformed(evt);
}
});
cinco.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
cinco.setText("5");
cinco.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cincoActionPerformed(evt);
}
});
seis.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
seis.setText("6");
seis.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
seisActionPerformed(evt);
}
});
mais.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
mais.setText("+");
mais.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
maisActionPerformed(evt);
}
});
sete.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
sete.setText("7");
sete.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
seteActionPerformed(evt);
}
});
oito.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
oito.setText("8");
oito.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
oitoActionPerformed(evt);
}
});
nove.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
nove.setText("9");
nove.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
noveActionPerformed(evt);
}
});
menos.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
menos.setText("-");
menos.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
menosActionPerformed(evt);
}
});
del.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
del.setText("DEL");
del.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
delActionPerformed(evt);
}
});
div.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
div.setText("/");
div.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
divActionPerformed(evt);
}
});
mult.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
mult.setText("*");
mult.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
multActionPerformed(evt);
}
});
raizq.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
raizq.setText("√");
raizq.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
raizqActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(24, 24, 24)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(visor)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(zero, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(div, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(um, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
.addComponent(quatro, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(sete, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(oito, javax.swing.GroupLayout.DEFAULT_SIZE, 53, Short.MAX_VALUE)
.addComponent(dois, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cinco, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(mult, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(tres, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(ponto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(seis, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(nove, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(raizq, javax.swing.GroupLayout.DEFAULT_SIZE, 56, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(igual, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(mais, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(menos, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(del))))
.addContainerGap(25, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(visor, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(div, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(raizq, javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE)
.addComponent(mult, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(del, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(sete, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(oito, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(nove, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(menos, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(quatro, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(seis, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(cinco, javax.swing.GroupLayout.PREFERRED_SIZE, 47, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(um, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(dois, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(tres, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(zero, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ponto, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(1, 1, 1))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(mais, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(igual, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(20, 20, 20))
);
pack();
}// </editor-fold>
private void zeroMouseClicked(java.awt.event.MouseEvent evt) {
limpar();
visor.setText(visor.getText()+"0");
}
private void umActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"1");
}
private void doisActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"2");
}
private void tresActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"3");
}
private void quatroActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"4");
}
private void cincoActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"5");
}
private void seisActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"6");
}
private void seteActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"7");
}
private void oitoActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"8");
}
private void noveActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+"9");
}
private void maisActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operacao = Operacao.SOMA;
operar();
}
private void menosActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operacao = Operacao.SUBTRACAO;
operar();
}
private void igualActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operar();
operacao = Operacao.NENHUMA;
}
private void delActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText("");
}
private void divActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operacao = Operacao.DIVISAO;
operar();
}
private void multActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operacao = Operacao.MULTIPLICACAO;
operar();
}
private void raizqActionPerformed(java.awt.event.ActionEvent evt) {
v2 = Double.parseDouble(visor.getText());
operacao = Operacao.RAIZQ;
operar();
}
private void pontoActionPerformed(java.awt.event.ActionEvent evt) {
limpar();
visor.setText(visor.getText()+".");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Calculadora.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Calculadora().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton cinco;
private javax.swing.JButton del;
private javax.swing.JButton div;
private javax.swing.JButton dois;
private javax.swing.JButton igual;
private javax.swing.JButton mais;
private javax.swing.JButton menos;
private javax.swing.JButton mult;
private javax.swing.JButton nove;
private javax.swing.JButton oito;
private javax.swing.JButton ponto;
private javax.swing.JButton quatro;
private javax.swing.JButton raizq;
private javax.swing.JButton seis;
private javax.swing.JButton sete;
private javax.swing.JButton tres;
private javax.swing.JButton um;
private javax.swing.JTextField visor;
private javax.swing.JButton zero;
// End of variables declaration
}
A maior parte do código foi feita pelo próprio programa (Netbeans) à medida em que fui adidionando os elementos ao JFrame.
Desculpem aí qualquer coisa, esse é meu primeiro post. Agradeço quem puder ajudar.