Ajuda para dois problemas em calculadora em java

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);
      }
      });
      }

    // 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
    }

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.

Quando a String for vazia, assuma o valor 0.

Fiz isso e dá certo. O problema é que estou trabalhando com uma calculadora, então, quando digito o número 1 por exemplo e o mais, aparece o zero no fundo da tela antes de digitar o segundo número. Gostaria de deixar a tela em branco, mas não consigo. Este é o problema. Grato pela resposta.

Quando o número do display for 0 e você digitar algum número, você ignora o 0 e assume somente o número digitado.

É isso mesmo, mas o pior que eu gostaria de ajuda mesmo é o fato do resultado ficar concatenando com o próximo número. Exemplo, aperto igual e aparece 243, aperto 1 e fica 2431.Esse é o problema principal. Além disso, gostaria de saber como realizar as operações com vários números e só encontro com dois na net.