Calculadora em Java quase 100% funcional com código!

4 respostas
F

Meu professor de Construção de Interfaces pediu que fizessemos a interface de uma calculadora em Java. Eu me empolguei e o resultado está aqui... Nem todas as funcionalidades estão implementadas, mas quase todas já estão!!!
Abaixo vai o código!!

//"Conhecereis a verdade e a verdade vos libertará!!!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class calculadora3 extends JFrame implements ActionListener{
    
    JPanel base = new JPanel();
    String text[] = {"M+","MS","MR","MC","CE","7","8","9","/","sqrt","4","5","6","X","%",
            		"1","2","3","-","1/x","0","+/-",".","+","="};
    int cont;
    JTextField janelinha = new JTextField();
    double temp = 0;
    char oper = '+';
    int opdid = 0;
    int opdid1 = 0;
    double memoria = 0;
    double Memory = 0;
    double temp2;
    
    public calculadora3(){
        
        setTitle("Calculadora");
        GridLayout gr = new GridLayout(5,5);
        base.setLayout(gr);
        base.setBackground(new Color(56,164,199));
        setSize(300,270);
        getContentPane().add(base, BorderLayout.CENTER);
        janelinha.setText("0");
        janelinha.setHorizontalAlignment(JTextField.RIGHT);
        janelinha.setBackground(new Color(215,215,255));
        getContentPane().add(janelinha,BorderLayout.NORTH);
        
        for (cont=0; cont<text.length;cont++)
        {
            makeButton(text[cont]);
        }
    }
    
    public void makeButton(String texto)
    {
        JButton botao = new JButton(texto);
        botao.setBackground(Color.WHITE);
        //botao.setBorderPainted(false);
        base.add(botao);
        botao.setActionCommand(texto);
        botao.addActionListener(this);
        
    }

    public void actionPerformed(ActionEvent e) {
              String selection = e.getActionCommand();
              String conteudoj = new String();
              
              if ("[telefone removido]".indexOf(selection) != -1) {
                  limpacampo();
                  conteudoj = janelinha.getText();
                  if (opdid1 == 1){
                  	  memoria = 0;
                  	  opdid1 = 0;
                  }
                  if (opdid == 1){                 	  
                      janelinha.setText(selection);
                      opdid = 0;                      
                      
                  }
                  else
                  {
                      janelinha.setText(conteudoj+selection);
                  }                                
               }
              
              if (selection.equals(".")){
                  if (janelinha.getText().indexOf(".")<1)
                  {
                      conteudoj = janelinha.getText();
                      janelinha.setText(conteudoj+".");
                  }
              }
              if (selection.equals("+/-"))
              {
                  if (!janelinha.getText().equals("0"))
                  {
                      if (janelinha.getText().indexOf("-")==-1)
                      {                    
                          conteudoj = janelinha.getText();
                          janelinha.setText("-"+conteudoj);
                      }
                      else
                      {                                 
                          double num = Double.parseDouble(janelinha.getText());
                          num *= -1;
                          String newvalue = String.valueOf(num);                  
                          janelinha.setText(newvalue);
                      }
                  }
              }
              if (selection.equals("sqrt")){
                  limpacampo();
                  conteudoj = janelinha.getText();
                  double rad = Double.parseDouble(conteudoj);
                  janelinha.setText(String.valueOf(Math.sqrt(rad))); 
              }
              
              if (selection.equals("=")){
                  igual();
              }
              
              if (selection.equals("CE")){
                  memoria = 0;
                  janelinha.setText("0");
              }
              
              if (selection.equals("1/x")){
                  temp = Double.parseDouble(janelinha.getText());
                  testanegativo(temp);
                  janelinha.setText(String.valueOf(1/temp));
              }
              
              if (selection.equals("+")){
                  temp = Double.parseDouble(janelinha.getText());
                  testanegativo(temp);
                  if (opdid1 == 1){
                  	opdid1 = 0;
                  	memoria = 0;
                  }
                  else
                  {
                      if (oper!='+'){
                          if (memoria!=0){
                              igual();
                              opdid1 = 0;
                          }
                      }
                  }
                  if (memoria == 0){                    
                         memoria += temp;
                         janelinha.setText("0");                         
                  }
                  else{
                      if (opdid != 1){  
                          memoria += temp;
                          opdid = 1;
                          janelinha.setText(String.valueOf(memoria));
                          limpamemoria();
                      }
                  }
                  oper = '+';
              }
              
              if (selection.equals("-")){               
                  temp = Double.parseDouble(janelinha.getText());
                  testanegativo(temp);
                  if (opdid1 == 1){
                  	opdid1 = 0;
                  	memoria = 0;
                  }
                  else
                  {
                      if (oper!='-'){
                          if (memoria!=0){
                              igual(); 
                              opdid1 = 0;
                          }
                      }
                  }
                  if (memoria == 0){                    
                         memoria += temp;
                         janelinha.setText("0");                         
                  }
                  else{
                      if (opdid != 1){  
                          memoria -= temp;
                          opdid = 1;
                          janelinha.setText(String.valueOf(memoria));
                          limpamemoria();
                      }
                  }
                  oper = '-';
              }
                         
              if (selection.equals("/")){
                  
                  temp = Double.parseDouble(janelinha.getText());
                  testanegativo(temp);
                  if (opdid1 == 1){
                  	opdid1 = 0;
                  	memoria = 0;
                  }
                  else
                  {
                      if (oper!='/'){
                          if (memoria!=0){
                            igual();
                            opdid1 = 0;
                          }
                      } 
                  }
                  if (temp == 0){
                      JOptionPane.showMessageDialog(null,"Erro \nDivisão por zero!!!");
                      janelinha.setText("0");
                      memoria = 0;
                      opdid = 0;
                  }
                  if (memoria == 0){                    
                         memoria = temp;
                         janelinha.setText("0");                         
                  }
                  else{
                      if (opdid != 1){                           
                          if (temp == 0){
                              JOptionPane.showMessageDialog(null,"Erro \nDivisão por zero!!!");
                              janelinha.setText("0");
                              memoria = 0;
                              opdid = 0;
                          }
                          memoria /= temp;
						  opdid = 1;
                          janelinha.setText(String.valueOf(memoria));
                      }
                  }
                  oper = '/';
              }
              
              if (selection.equals("X")){
                             
                  temp = Double.parseDouble(janelinha.getText());
                  testanegativo(temp);
                  if (opdid1 == 1){
                  	opdid1 = 0;
                  	memoria = 0;
                  }
                  else
                  {
                      if (oper!='X'){
                          if (memoria!=0)
                          {
                              igual();
                              opdid1 = 0;
                          }
                      }  
                  }
                  if (memoria == 0){                    
                         memoria = temp;
                         janelinha.setText("0");                         
                  }
                  else{
                      if (opdid != 1){                        
                          memoria *= temp;
                          opdid = 1;
                          janelinha.setText(String.valueOf(memoria));
                      }
                  }
                  oper = 'X';
              }             
    }   
 
    
    public void igual(){
        
        if (oper == '+'){
            if (opdid == 0)
            {
                double temp1 = Double.parseDouble(janelinha.getText());
                //testanegativo(temp1);
                memoria += temp1;
                janelinha.setText(String.valueOf(memoria));
                opdid = 1;
                temp2 = temp1;
                limpamemoria();
            }
            else
            {
                memoria += temp2;
                janelinha.setText(String.valueOf(memoria));
                limpamemoria();
            }
            opdid1 = 1;
        }
        
        
        if (oper == '-'){
            if (opdid == 0)
            {
                double temp1 = Double.parseDouble(janelinha.getText());
                //	testanegativo(temp1);
                memoria -= temp1;
                janelinha.setText(String.valueOf(memoria));
                opdid = 1;
                temp2 = temp1;                              
            }
            else
            {
                memoria -= temp2;
                janelinha.setText(String.valueOf(memoria));
            }
            opdid1 = 1;
        }
        
        if (oper == 'X'){
            if (opdid == 0)
            {                 
                double temp1 = Double.parseDouble(janelinha.getText());
                testanegativo(temp1);
                memoria *= temp1;
                janelinha.setText(String.valueOf(memoria));
                opdid = 1;
                temp2 = temp1;
            }
            else
            {
                memoria *= temp2;
                janelinha.setText(String.valueOf(memoria));
            }
            opdid1 = 1;
        }
        
        if (oper == '/'){
            if (opdid == 0)
            {
                double temp1 = Double.parseDouble(janelinha.getText());
                testanegativo(temp1);
                if (temp1 == 0){
                    JOptionPane.showMessageDialog(null,"Erro \nDivisão por zero!!!");
                    janelinha.setText("0");              
                }
                else
                {
                memoria /= temp1;
                janelinha.setText(String.valueOf(memoria));
                opdid = 1;
                temp2 = temp1;
                }
            }
            else
            {               
                if (temp2 == 0){
                    JOptionPane.showMessageDialog(null,"Erro \nDivisão por zero!!!");
                    janelinha.setText("0");
                }
                else
                {
                memoria /= temp2;
                janelinha.setText(String.valueOf(memoria));
                }
            }
            opdid1 = 1;
        }
    }
                           
    public void testanegativo(double temp){
        if (janelinha.getText().indexOf('-')>-1){
            temp *= -1;
        }
    }
    
    public void limpacampo(){
        if(janelinha.getText().equals("0")){
            janelinha.setText("");
        }
    }
    
    public void limpamemoria(){
    		double testmemory = Double.parseDouble(janelinha.getText());
    		if (memoria != testmemory){
    			memoria = 0;
    		}
    	}
    
    public static void main(String[] args) {
        calculadora3 calc = new calculadora3();
        calc.setVisible(true);
        calc.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

Eu só não comentei pq comentários atrapalham o código

4 Respostas

D

Muito legal seu programa, testei ele e funcionou muito bem.

Só quero fazer uma observação, por mais que isso não deixa em hipótese alguma seu código errado, por padrão utiliza-se o nome da classe com letra maiúscula. Mas de qualquer forma, parabéns.

M

muito show felipe, se for do teu interesse, pode disponibilizar o teu código aqui no portal java no nosso estoque… hehehe, claro, com direitos autorais e tudo… pra nao ficar só aqui no fórum… :slight_smile:

F

Oh Matheus, se for possível eu quero sim, seria muito gratificante.
Para lembrar, o projeto pode ser modificado caso sejam verificados erros OK! Se possível me reportem os mesmos…

Obrigado Matheus e todos do portal!

M

felipestanzani

parabéns…
ficou muito show… :grin:

Abraço,
Maicon

Criado 20 de outubro de 2004
Ultima resposta 21 de out. de 2004
Respostas 4
Participantes 4