Duvida Calculadora

Gente, estou criando uma calculadora convencional com operações simples e com interface de botões como a do windows, ja fiz toda a interface, ja coloquei os eventos dos botões numerais, o meu problema é nas operações, Ponto e igualdade, como farei isso? estou postando meu código para que venha ser analisado. Agradeço desde já


private void botao6ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "6");
    }                                      

    private void botaopontoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String num = texto.getText();
        texto.setText(num + ".");
    }                                          

    private void botao1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "1");
    }                                      

    private void botao2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "2");
    }                                      

    private void botao3ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "3");
    }                                      

    private void botao4ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "4");
    }                                      

    private void botao5ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "5");
    }                                      

    private void botao7ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "7");
    }                                      

    private void botao8ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "8");
    }                                      

    private void botao9ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "9");
    }                                      

    private void botaodivActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                        

    private void botaomultActionPerformed(java.awt.event.ActionEvent evt) {                                          
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                         

    private void botaosubActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                        

    private void botaosomaActionPerformed(java.awt.event.ActionEvent evt) {                                          
       String numero = texto.getText();
       texto.setText(numero + "+");
       
    }                                         

    private void botaoigualActionPerformed(java.awt.event.ActionEvent evt) {                                           
        
        
    }                                          

    private void botao0ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        texto.setText("0");
    }                                      

    // 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 botaodiv;
    private javax.swing.JButton botaoigual;
    private javax.swing.JButton botaomult;
    private javax.swing.JButton botaoponto;
    private javax.swing.JButton botaosoma;
    private javax.swing.JButton botaosub;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField texto;
    // End of variables declaration                   
}

A sua lição de casa é “escreva uma calculadora igualzinha àquelas que se compram por 5 reais, que não têm controle da prioridade dos operadores” ou “escreva uma calculadora que obedeça à prioridade dos operadores, incluindo botões de parênteses” ou “escreva uma calculadora RPN, como uma HP-11C”?

Se for a “escreva uma calculadora que não tem controle da prioridade dos operadores” então você precisa pensar um pouco antes de sair fazendo.

Digamos que você tenha a seguinte sequência de teclas:

12 + 34 =

e o resultado desejado é 46.

O que você precisa fazer no sinal de “+” e no sinal de “=” é o que você está tendo dificuldades.

Basicamente, no sinal de “+”, você precisa fazer o seguinte (estou supondo que você vá fazer uma calculadora mais simples ainda que aquela que se vende por 5 reais - como você deve ter visto, aquela calculadora de 5 reais permite encadear operações, o que não vai ser o caso aqui) :

  1. Guardar o número que já estava na tela em uma variável. (No nosso caso, é o número 12)
  2. Guardar a operação desejada em uma variável. (No nosso caso, “+”)
    3( Limpar o textfield, para que possamos entrar com o próximo número.

No sinal de “=”, você precisa fazer o seguinte:

  • Como você deve se lembrar, há um número que você guardou no passo 1 acima, e também uma operação que você guardou no passo 2 acima.
    Você deve combinar o número que você guardou (12) com a operação (+) e o número que está na tela (34) e fazer a conta.
  • O resultado da conta você apresenta na tela.

Cara, muito obrigado, você me respondeu da maneira mais correta, me fez pensar, não me entregou a resposta e ponto. vc me fez pensar, e conseguir fazer … não sei se da maneira mais correta, mas o resultado deu certinho, olha ae o código =x
Por enquanto eu so fiz com a soma pra testar, mas pros outros é so fazer a mesma coisa, o q vc acha ja é um começo?


 private void botao6ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "6");
    }                                      

    private void botaopontoActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String num = texto.getText();
        texto.setText(num + ".");
    }                                          

    private void botao1ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "1");
    }                                      

    private void botao2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "2");
    }                                      

    private void botao3ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "3");
    }                                      

    private void botao4ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "4");
    }                                      

    private void botao5ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "5");
    }                                      

    private void botao7ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "7");
    }                                      

    private void botao8ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "8");
    }                                      

    private void botao9ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        String num = texto.getText();
        texto.setText(num + "9");
    }                                      

    private void botaodivActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                        

    private void botaomultActionPerformed(java.awt.event.ActionEvent evt) {                                          
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                         

    private void botaosubActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String numero = texto.getText();
        numero1 = Double.parseDouble(numero);
    }                                        

    private void botaosomaActionPerformed(java.awt.event.ActionEvent evt) {                                          
       String numero = texto.getText();
       numDouble = Double.parseDouble(numero);
       // soma = 1
       operacao = 1;
       texto.setText("");
    }                                         

    private void botaoigualActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String numString = texto.getText();
        double numD = Double.parseDouble(numString);
        if (operacao == 1){
            double resultado = numDouble + numD;
            String resultadoString = String.valueOf(resultado);
            texto.setText(resultadoString);
        }
        
    }                                          

    private void botao0ActionPerformed(java.awt.event.ActionEvent evt) {                                       
        texto.setText("0");
    }                                      

    // 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 botaodiv;
    private javax.swing.JButton botaoigual;
    private javax.swing.JButton botaomult;
    private javax.swing.JButton botaoponto;
    private javax.swing.JButton botaosoma;
    private javax.swing.JButton botaosub;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField texto;
    // End of variables declaration                   
}

Confesso que sempre tenho preguiça de ler o código dos outros. Se você testou e aparentemente está funcionando, tente para as outras operações, e boa sorte!

Dar so uma olhadinha aqui nesses If, ta dando um erro acho q deva ser erro nas chaves.

 private void botaoigualActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String numString = texto.getText();
        double numD = Double.parseDouble(numString);
        if (operacao == 1){
            double resultado = numDouble + numD;
            String resultadoString = String.valueOf(resultado);
            texto.setText(resultadoString);
        }
    
         if else (operacao == 2){
            double resultado = numDouble - numD;
            String resultadoString = String.valueOf(resultado);
            texto.setText(resultadoString);
    
        }  if else (operacao == 3){
            double resultado = numDouble * numD;
            String resultadoString = String.valueOf(resultado);
            texto.setText(resultadoString);
    
        }  if else (operacao == 4){
            double resultado = numDouble / numD;
            String resultadoString = String.valueOf(resultado);
            texto.setText(resultadoString);
    
        }
        
    }                                          

Você tem de usar “else if”, não “if else”.

Você também pode usar “switch / case” se assim desejar. Já aprendeu o “switch/case”?

Ja sim amigo, obrigado =]