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 != ‘’){
switch(operacao){
case ‘+’:
total = num1 + num2;
visor.setText((String.valueOf(total)));
num1 = 0;
num2 = 0;
total = 0;
operacao = '’;
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.