Eis o meu código em Java:
/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package mapacalculadora;
import java.text.DecimalFormat;
/**
*
-
@author Usuario
*/
public class Calculadora extends javax.swing.JFrame {/**
- Creates new form Calculadora
*/
double num1 = 0, num2 = 0, subtotal = 0, total = 0;
char operacao = ‘_’;
String botao;
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”) // private void initComponents() {
visor = new javax.swing.JTextField(); botao7 = new javax.swing.JButton(); botao8 = new javax.swing.JButton(); botao9 = new javax.swing.JButton(); botaodivisao = new javax.swing.JButton(); botao4 = new javax.swing.JButton(); botao5 = new javax.swing.JButton(); botao6 = new javax.swing.JButton(); botaomult = new javax.swing.JButton(); botao1 = new javax.swing.JButton(); botao2 = new javax.swing.JButton(); botao3 = new javax.swing.JButton(); botaosubt = new javax.swing.JButton(); botaoCE = new javax.swing.JButton(); botao0 = new javax.swing.JButton(); botaoigual = new javax.swing.JButton(); botaoadicao = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
visor.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N visor.setHorizontalAlignment(javax.swing.JTextField.RIGHT); visor.setText(“0”);
botao7.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao7.setText(“7”); botao7.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao7ActionPerformed(evt); } });
botao8.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao8.setText(“8”); botao8.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao8ActionPerformed(evt); } });
botao9.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao9.setText(“9”); botao9.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao9ActionPerformed(evt); } });
botaodivisao.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaodivisao.setText("/"); botaodivisao.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaodivisaoActionPerformed(evt); } });
botao4.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao4.setText(“4”); botao4.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao4ActionPerformed(evt); } });
botao5.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao5.setText(“5”); botao5.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao5ActionPerformed(evt); } });
botao6.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao6.setText(“6”); botao6.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao6ActionPerformed(evt); } });
botaomult.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaomult.setText("*"); botaomult.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaomultActionPerformed(evt); } });
botao1.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao1.setText(“1”); botao1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao1ActionPerformed(evt); } });
botao2.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao2.setText(“2”); botao2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao2ActionPerformed(evt); } });
botao3.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao3.setText(“3”); botao3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao3ActionPerformed(evt); } });
botaosubt.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaosubt.setText("-"); botaosubt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaosubtActionPerformed(evt); } });
botaoCE.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaoCE.setText(“CE”); botaoCE.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoCEActionPerformed(evt); } });
botao0.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botao0.setText(“0”); botao0.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botao0ActionPerformed(evt); } });
botaoigual.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaoigual.setText("="); botaoigual.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoigualActionPerformed(evt); } });
botaoadicao.setFont(new java.awt.Font(“Tahoma”, 0, 36)); // NOI18N botaoadicao.setText("+"); botaoadicao.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoadicaoActionPerformed(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() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(visor) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botao4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaoCE, javax.swing.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE)) .addGap(58, 58, 58) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botao2, javax.swing.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE) .addComponent(botao0, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(59, 59, 59) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(botao3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaoigual, javax.swing.GroupLayout.DEFAULT_SIZE, 97, Short.MAX_VALUE))) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botao8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(59, 59, 59) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botao6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))) .addGap(54, 54, 54) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botaosubt, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaomult, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaodivisao, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaoadicao, javax.swing.GroupLayout.DEFAULT_SIZE, 91, Short.MAX_VALUE)))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(visor, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botaodivisao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(botao7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao9, 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.BASELINE) .addComponent(botaomult, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(15, 15, 15) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(botao1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(botaosubt, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao2, 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(botaoCE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(botaoadicao, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botaoigual, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(botao0, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) );
pack();
}//
public void digitarNumeros(String temp1){ String temp = visor.getText(); if (temp==“0”){ visor.setText(temp1); }else{ double total; total = (Double.parseDouble(temp) * 10) + Double.parseDouble(temp1); DecimalFormat df = new DecimalFormat("#.########"); visor.setText(df.format(total)); } }
private void botao1ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“1”); }
private void botao2ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“2”); }
private void botao3ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“3”); }
private void botao4ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“4”); }
private void botao5ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“5”); }
private void botao6ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“6”); }
private void botao7ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“7”); }
private void botao8ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“8”); }
private void botao9ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“9”); }
private void botao0ActionPerformed(java.awt.event.ActionEvent evt) { digitarNumeros(“0”); }
private void botaoCEActionPerformed(java.awt.event.ActionEvent evt) { visor.setText(“0”); }
private void botaoadicaoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: operacao = ‘+’; num1 = Double.valueOf(visor.getText()); visor.setText(“0”); }
private void botaosubtActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: operacao = ‘-’; num1 = Double.valueOf(visor.getText()); visor.setText(“0”); }
private void botaomultActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: operacao = ‘*’; num1 = Double.valueOf(visor.getText()); visor.setText(“0”); }
private void botaodivisaoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: operacao = ‘/’; num1 = Double.valueOf(visor.getText()); visor.setText(“0”); }
private void botaoigualActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: num2 = Double.valueOf(visor.getText()); if (operacao != ‘<em>’){ switch(operacao){ case ‘+’: total = num1 + num2; visor.setText((String.valueOf(total))); num1 = 0; num2 = 0; total = 0; operacao = '</em>’; break; case ‘-’: total = num1 - num2; visor.setText((String.valueOf(total))); break; case ‘*’: total = num1 * num2; visor.setText((String.valueOf(total))); break; case ‘/’: total = num1 / num2; visor.setText((String.valueOf(total))); break; default: visor.setText(“Operação incorreta”); break;
} }
}
/**
-
@param args the command line arguments
/
public static void main(String args[]) {
/ Set the Nimbus look and feel /
//
/ 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);
}
//
/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Calculadora().setVisible(true); } }); }
- For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
// Variables declaration - do not modify private javax.swing.JButton botao0; private javax.swing.JButton botao1; private javax.swing.JButton botao2; private javax.swing.JButton botao3; private javax.swing.JButton botao4; private javax.swing.JButton botao5; private javax.swing.JButton botao6; private javax.swing.JButton botao7; private javax.swing.JButton botao8; private javax.swing.JButton botao9; private javax.swing.JButton botaoCE; private javax.swing.JButton botaoadicao; private javax.swing.JButton botaodivisao; private javax.swing.JButton botaoigual; private javax.swing.JButton botaomult; private javax.swing.JButton botaosubt; private javax.swing.JTextField visor; // End of variables declaration }
- Creates new form Calculadora
O problema é que ao fazer a soma de dois numeros, na troca de tela, só posso colocar o zero após o primeiro número. Sei que o comando para limpar o campo de texto seria visor.setText(""), mas não consigo implementar, pois por exigência do meu professor tive que trabalhar com variáveis numéricas para concatenar e aí se erro o comando para limpar, aparece o seguinte erro: Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: empty String.
Gostaria de saber se há algum meio para contornar este problema.
Outra dificuldade é que que acontece o seguinte:
Por exemplo, digamos que vou somar 2+2 e depois 5 + 4. Quando digito 2 + 2 =, aparece o resultado correto que é 4.0, mas quando tento começar uma nova operação, ao invés do visor limpar, o 5 da operação seguinte é concatenado com o 4, formando um 45. Preciso de ajuda neste item também. Preciso de ajuda urgente, pois não tenho muito tempo para resolver este problema. Grato por qualquer ajuda.