Calculadora

25 respostas
blackfalcon

Eu sei que aqui ja tem bastante calculadoras… algumas ate em interface xD

Mas eu resolvi postar a que eu fiz para o pessoal ver e falar se tem alguma coisa errada…

import java.util.Scanner;

public class Calculadora
{
	public static void main ( String args[] )
	{
		int operac, num1, num2;
		Scanner scan = new Scanner ( System.in );
		
		System.out.print("\n1 - Somar\n2 - Subtrair\n3 - Multiplicar\n4 - Dividir\n\n");
		System.out.print("Escola a operacao que deseja efetuar: ");
		operac = scan.nextInt();
		
		System.out.print("\nDigite o primeiro numero: ");
		num1 = scan.nextInt();
		System.out.print("\nDigite o segundo numero: ");
		num2 = scan.nextInt();
		
		switch(operac)
		{
			case 1:
			{
			    Somar(num1, num2);
			    break;	
			}
			case 2:
			{
				Subtrair(num1, num2);
				break;
			}
			case 3:
			{
				Multiplicar(num1, num2);
				break;
			}
			case 4:
			{
				Dividir(num1, num2);
				break;
			}
		}
	}
	
	public static void Somar(int x, int y)
	{
		System.out.println("\nA Soma dos numeros e: " + (x + y));
	}
	
	public static void Subtrair(int x, int y)
	{
		System.out.println("\nA Subtracao dos numeros e: " + (x - y));		
	}
	
	public static void Multiplicar(int x, int y)
	{
		System.out.println("\nA Multiplicacao dos numeros e: " + (x * y));
	}
	
	public static void Dividir(int x, int y)
	{
		System.out.println("\nA Divisao dos numeros e: " + (x / y));
	}
	
}

Abraços

25 Respostas

fabbio_2k

E Ai blz ? Olha no meu ver a sua Calculadora precisa do seguinte :

  1. O seu menu tem que ser um laço controlado por flag ,tipo coloca mais uma opção = sair da calculadora
    isso vai servir para que a calculadora faça mais de uma operação, pq do jeito que está ela apenas faz uma
    operação e termina.

  2. tipo dos números : é melhor que seja em float para que vc possa trabalhar com mais números
    eu coloquei 1/2 e ele me volta zero ,logo está errado, coloca o tipo float que vai voltar o resultado certo

  3. vc tem que tratar a divisão por zero. nunca esqyeça disso ao montar um código que trabalha com
    números
    acho que é isso, espero ter te ajudado,blz ? :smiley:
    Abraços.

T

Para fazer contas, nunca usar float e sim double, a menos que você saiba o que está fazendo.

fabbio_2k

Eu só disse para ele usar float pq me parece ser uma simples calculadora
que ele quer ,apenas um exemplo nada de muito elaborado ,então pra isso float
resolve. :slight_smile:

blackfalcon

Voce falou pra colocar o loop… como eu poderia fazer isso?

Tem como colocar o source da calculadora com esse loop aqui fazendo favor? Obrigado!

Abraços

S

Tu pode pegar o seu código ja pronto e colocar dentro de um comando tipo assim:

do{
System.out.pritln("Digite 0 para parar a calculadora.");
int op = scan.nextInt(); //se o cara digitar 0, tu para a calculadora.
}while(op!=0);

Eu prefiro usar uma JOptionPane para uma calculadora basica assim, ai tu já começa a fazer algo com frames e tals.
Da uma olhada em JOptionPane.showInputDialog, .showMessageDialog, etc, pode te ajudar.

blackfalcon

Eu nao entendi tao bem o que tu falou xDDD

mas vamos tentar ne…

abraços

blackfalcon

Mal pelo flood mas agora entendi… tou fazendo a calc aqui e depois eu posto ela aqui xD

Qual comando para limpar a tela? ou como faz pra rodar comandos do ms-dos?

brigadao pela ajuda xD

S

Por isso que disse pra vc começar a pesquisar um poco mais sobre entrada de dados pelo java mesmo, nao tem pq ficar usando o DOS, entende?

blackfalcon
import java.util.Scanner;

public class Calculadora
{
	public static void main ( String args[] )
	{
		int op, num1, num2;
		Scanner scan = new Scanner ( System.in );
		
		
		
		do
		{  
        	System.out.println("\n\n0 - Sair\n1 - Somar\n2 - Subtrair\n3 - Multiplicar\n4 - Dividir");
			System.out.print("\n\nEscolha uma operacao: ");
			op = scan.nextInt();
			
			System.out.print("\nDigite o primeiro numero: ");  
			num1 = scan.nextInt();
			System.out.print("\nDigite o segundo numero: ");  
			num2 = scan.nextInt();
			
			switch(op)
			{
				case 1:
				{
					Somar(num1, num2);
					break;
				}
				
				case 2:
				{
					Subtrair(num1, num2);
					break;
				}
				
				case 3:
				{
					Multiplicar(num1, num2);
					break;
				}
				
				case 4:
				{
					Dividir(num1, num2);
					break;
				}
			}
        }
        while(op != 0); 
        
		
	}
	
	
	public static void Somar(int x, int y)
	{
		System.out.println("\nA Soma dos numeros e: " + (x + y));
	}
	
	public static void Subtrair(int x, int y)
	{
		System.out.println("\nA Subtracao dos numeros e: " + (x - y));		
	}
	
	public static void Multiplicar(int x, int y)
	{
		System.out.println("\nA Multiplicacao dos numeros e: " + (x * y));
	}
	
	public static void Dividir(int x, int y)
	{
		System.out.println("\nA Divisao dos numeros e: " + (x / y));
	}
	
}

Eu fiz do jeito que voce falou… ficou interessante, porem eu queria limpar a tela e tambem se o cara digitar “0” o programa vai pedir pra ele digitar o primeiro numero, o segundo numero e so depois que ele vai finalizar o programa… como eu faço para se colocar 0 ali, o codigo finalize? como faço pra pular essa parte e ir direto pro final do loop?

abraços

S

Coloque uma condição ai no meio

if (op!=null){
//aqui seu código;
}

ele só vai fazer o que tiver ali dentro se o ele digitou foi diferente de 0.

ViniGodoy

Concordo.

jfabbio:

Eu só disse para ele usar float pq me parece ser uma simples calculadora
que ele quer ,apenas um exemplo nada de muito elaborado ,então pra isso float
resolve.

Discordo. Não há razão para usar floats.
E há várias em favor do double:

  1. É melhor cortar o mal pela raíz;
  2. Uma simples calculadora não terá problemas de performance, tamanho de código, memória ocupada, ou qualquer outra razão que leve a usar um float;
  3. A calculadora fica mais precisa;
  4. O código com float não fica mais simples (nem mais complexo).
blackfalcon

sephct:
Coloque uma condição ai no meio

if (op!=null){
//aqui seu código;
}

ele só vai fazer o que tiver ali dentro se o ele digitou foi diferente de 0.

Puts, eu sei pra que serve os comandos e tal mas nao tenho muita a logica de como fazer as coisas =/

Eu consegui mano, agora o programa roda certinho xD

Obrigado pela ajuda e comprensao de todos!

Abraços

tnaires

thingol ( ou ViniGodoy ou outro usuário ), você poderia por favor postar alguns links ou artigos que descrevessem as desvantagens de usar float? Pesquisei no Google mas não achei muita coisa… :oops:

E

saiba que isso ja vem do C, pontos flutuantes não tem uma precisão exata. melhor usar double sempre
escuto isso des dos tempos de faculdade e até hojê não pesquisei o porque exatamente.

ViniGodoy

Primeiro, é preciso entender como os floats funcionam. E isso não é só no C, mas em qualquer máquina que tenha como base o sistema binário:
http://www.guj.com.br/posts/list/68086.java#357907
http://www.guj.com.br/posts/list/84121.java#448928

Esses posts já mostram uma boa razão para trabalhar com doubles.
Note que ambos os usuários sofreram com problemas decorrentes disso.

Há uma explicação mais detalhada no item 49 do livro Effective Java 1a edição, página 149, chamado:
“Avoid float and double if exact answer are required.”

E

muito útil saber disso, melhor descobrir agora do que quebrar se quebrar pro horas pra achar onde está o problema.

N

vlwww mutio obrigado!!

A

Boas! Eu tou fazendo uma calculadora como trabalho pa univertssidade tem de ser coisa mt simples consigui fazer mas tou com o probleminha como é k eu faço para poder insirir numeros com casas decimais nas operaçoes? Aqui vai o k ja tenho feito :

import <a href="http://java.io">java.io</a>.<em>;

import java.util.</em>;

public class calc {

public static void main(String[] args) {

float a,b,c,operaçao;

Scanner ScanTeclado = new Scanner(System.in);

System.out.println(“Introduza a 1ª variavel:”);

a=ScanTeclado.nextInt();

System.out.println(“Introduza a operaçao desejada (1)adiçao (2)subtraçao (3)multiplicaçao (4)divisao:”);

operaçao=ScanTeclado.nextInt();

System.out.println(“Introduza a 2ª variavel:”);

b=ScanTeclado.nextInt();

if (operaçao==1){

System.out.println(“Resultado:”);

c=a+b;

System.out.println(“a+b=”+c);

}

else if (operaçao==2){

System.out.println(“Resultado:”);

c=a-b;

System.out.println(“a-b=”+c);

}

else if (operaçao==3){

System.out.println(“Resultado:”);

c=a<em>b;

System.out.println("a</em>b="+c);

}

else if(operaçao==4){

System.out.println(“Resultado:”);

if (b==0){System.out.println(“Erro - divisao por 0”);

}

c=a/b;

System.out.println(“a/b=”+c);

}

else{

System.out.println(“Erro - Operaçao inexistente.”);

}
}
}

JhowTroMundo

Olá, pessoal. Ressucitando o Topico!

Tb me deu uma de criar uma calculadora, mais imitando a do windows. O negócio é que to com um probleminha de logica.

Quando clico, por exemplo, no botão +, automaticamente a soma pe feita, e não é feita quando eu aperto a outra operação, como deveria ser. Esse problema eu sei o que é, mas nao consegui pensar (quase) numa forma de imitar a calculadora do windows.

package calculadora;

/**
 *
 * @author Jhonatas
 */
public class Calculadora extends javax.swing.JFrame {

    String operacao;
    String operacao2;
    String botao;
    String num = "";
    double num1 = 0;
    double num2 = 0;


    public Calculadora() {
        initComponents();
        tf_display.requestFocus();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        tf_display = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jPanel1 = new javax.swing.JPanel();
        botao_0 = new javax.swing.JButton();
        botao_coma = new javax.swing.JButton();
        botao_subtrair = new javax.swing.JButton();
        botao_somar = new javax.swing.JButton();
        botao_multiplicar = new javax.swing.JButton();
        botao_4 = new javax.swing.JButton();
        botao_5 = new javax.swing.JButton();
        botao_6 = new javax.swing.JButton();
        botao_3 = new javax.swing.JButton();
        botao_2 = new javax.swing.JButton();
        botao_1 = new javax.swing.JButton();
        botao_7 = new javax.swing.JButton();
        botao_8 = new javax.swing.JButton();
        botao_9 = new javax.swing.JButton();
        botao_dividir = new javax.swing.JButton();
        botao_igual = new javax.swing.JButton();
        jButton21 = new javax.swing.JButton();
        botao_porcentagem = new javax.swing.JButton();
        tf_display2 = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jButton1.setText("jButton1");

        jButton2.setText("jButton2");

        botao_0.setText("0");
        botao_0.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_0ActionPerformed(evt);
            }
        });

        botao_coma.setText(",");
        botao_coma.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_comaActionPerformed(evt);
            }
        });

        botao_subtrair.setText("-");
        botao_subtrair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_subtrairActionPerformed(evt);
            }
        });

        botao_somar.setText("+");
        botao_somar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_somarActionPerformed(evt);
            }
        });

        botao_multiplicar.setText("*");
        botao_multiplicar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_multiplicarActionPerformed(evt);
            }
        });

        botao_4.setText("4");
        botao_4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_4ActionPerformed(evt);
            }
        });

        botao_5.setText("5");
        botao_5.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_5ActionPerformed(evt);
            }
        });

        botao_6.setText("6");
        botao_6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_6ActionPerformed(evt);
            }
        });

        botao_3.setText("3");
        botao_3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_3ActionPerformed(evt);
            }
        });

        botao_2.setText("2");
        botao_2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_2ActionPerformed(evt);
            }
        });

        botao_1.setText("1");
        botao_1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_1ActionPerformed(evt);
            }
        });

        botao_7.setText("7");
        botao_7.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_7ActionPerformed(evt);
            }
        });

        botao_8.setText("8");
        botao_8.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_8ActionPerformed(evt);
            }
        });

        botao_9.setText("9");
        botao_9.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_9ActionPerformed(evt);
            }
        });

        botao_dividir.setText("/");
        botao_dividir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_dividirActionPerformed(evt);
            }
        });

        botao_igual.setText("=");
        botao_igual.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botao_igualActionPerformed(evt);
            }
        });

        jButton21.setText("1/x");

        botao_porcentagem.setText("%");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(botao_1, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_2, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_3, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_subtrair, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(botao_4, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(botao_5, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(6, 6, 6))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(botao_0, javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(botao_6, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(botao_multiplicar, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addComponent(botao_coma, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(botao_somar, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(botao_7, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_8, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_9, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(botao_dividir, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(botao_porcentagem, 0, 0, Short.MAX_VALUE)
                    .addComponent(botao_igual, 0, 0, Short.MAX_VALUE)
                    .addComponent(jButton21, javax.swing.GroupLayout.DEFAULT_SIZE, 57, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botao_7, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_8, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_9, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_dividir, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_porcentagem, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botao_4, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_5, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_6, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botao_multiplicar, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton21, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(botao_subtrair, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(botao_3, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(botao_2, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(botao_1, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(botao_somar, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(botao_coma, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(botao_0, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(6, 6, 6)
                        .addComponent(botao_igual, javax.swing.GroupLayout.DEFAULT_SIZE, 88, Short.MAX_VALUE)))
                .addContainerGap())
        );

        tf_display2.setBackground(new java.awt.Color(255, 255, 255));
        tf_display2.setEditable(false);

        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(tf_display, javax.swing.GroupLayout.DEFAULT_SIZE, 329, Short.MAX_VALUE)
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(jButton2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jButton1))
                    .addComponent(tf_display2, javax.swing.GroupLayout.DEFAULT_SIZE, 329, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(31, 31, 31)
                .addComponent(tf_display2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(tf_display, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1)
                    .addComponent(jButton2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 110, Short.MAX_VALUE)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>                        

    private void botao_0ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        botao = "0";
        
        getNum();
    }                                       

    private void botao_1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "1";

      getNum();
    }                                       

    private void botao_2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "2";

      getNum();
    }                                       

    private void botao_3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "3";

      getNum();
    }                                       

    private void botao_4ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "4";

      getNum();
    }                                       

    private void botao_5ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "5";

      getNum();
    }                                       

    private void botao_6ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "6";

      getNum();
    }                                       

    private void botao_7ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "7";

      getNum();
    }                                       

    private void botao_8ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "8";

      getNum();
    }                                       

    private void botao_9ActionPerformed(java.awt.event.ActionEvent evt) {                                        
      botao = "9";

      getNum();
    }                                       

    private void botao_comaActionPerformed(java.awt.event.ActionEvent evt) {                                           
      botao = ".";
      
      getNum();
    }                                          

    private void botao_somarActionPerformed(java.awt.event.ActionEvent evt) {                                            
      operacao = "+";

      getNum1(operacao);
      //setOperation(operacao);
    }                                           

    private void botao_subtrairActionPerformed(java.awt.event.ActionEvent evt) {                                               
        operacao = "-";

        getNum1(operacao);
        //setOperation(operacao);
    }                                              

    private void botao_multiplicarActionPerformed(java.awt.event.ActionEvent evt) {                                                  
        operacao = "*";

        getNum1(operacao);
        //setOperation(operacao);
    }                                                 

    private void botao_dividirActionPerformed(java.awt.event.ActionEvent evt) {                                              
        operacao = "/";
        getNum1(operacao);
        //setOperation(operacao);
    }                                             

    private void botao_igualActionPerformed(java.awt.event.ActionEvent evt) {                                            
        //showResult();
    }                                           

    
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Calculadora().setVisible(true);
            }
        });
    }

    public void getNum()
    {
        num = num+botao;
        setDisplay();
    }

    public void setDisplay()
    {
        tf_display.setText(num);
    }


    //Aqui ele faz a operação assim que o botão é pressionado, o que está errado.

    public void getNum1(String operacao)
    {
        //num1 = (Double.parseDouble(tf_display.getText()));

         if (operacao.equals("+"))
        {
            num1+= Double.parseDouble(tf_display.getText());
        }
        else
        {
            if (operacao.equals("-"))
            {
                num1-= Double.parseDouble(tf_display.getText());
            }
            else
            {
                if (operacao.equals("*"))
                {
                    num1*= Double.parseDouble(tf_display.getText());
                }
                else
                {
                    if (operacao.equals("/"))
                    {
                        num1/= Double.parseDouble(tf_display.getText());
                    }
                }
            }
        }
           
        setOperation(operacao);
    }


    public void setOperation(String operacao)
    {
        //num1= Double.parseDouble(tf_display.getText());

        if (operacao.equals("+"))
        {
            tf_display2.setText(String.valueOf(num1 + " +"));                    
        }
        else
        {
            if (operacao.equals("-"))
            {
                tf_display2.setText(String.valueOf(num1 + " -"));                
            }
            else
            {
                if (operacao.equals("*"))
                {
                    tf_display2.setText(String.valueOf(num1 + " *"));                    
                }
                else
                {
                    if (operacao.equals("/"))
                    {
                        tf_display2.setText(String.valueOf(num1 + " /"));                       
                    }
                }
            }
        }
        
         cleanDisplay();
    }

    public void cleanDisplay()
    {
        num = "";
        tf_display.setText("");
    }

    //public void showResult()
   // {
    // num1+=Double.parseDouble(tf_display.getText());
    // tf_display.setText(String.valueOf(num1));
    //}

    

    // Variables declaration - do not modify                     
    private javax.swing.JButton botao_0;
    private javax.swing.JButton botao_1;
    private javax.swing.JButton botao_2;
    private javax.swing.JButton botao_3;
    private javax.swing.JButton botao_4;
    private javax.swing.JButton botao_5;
    private javax.swing.JButton botao_6;
    private javax.swing.JButton botao_7;
    private javax.swing.JButton botao_8;
    private javax.swing.JButton botao_9;
    private javax.swing.JButton botao_coma;
    private javax.swing.JButton botao_dividir;
    private javax.swing.JButton botao_igual;
    private javax.swing.JButton botao_multiplicar;
    private javax.swing.JButton botao_porcentagem;
    private javax.swing.JButton botao_somar;
    private javax.swing.JButton botao_subtrair;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton21;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTextField tf_display;
    private javax.swing.JTextField tf_display2;
    // End of variables declaration                   

}

Talvez eu não tenha me expressado direito, e se for o caso, favor avisar.

Mas algem tem uma dica?

B

JhowTroMundo:
Olá, pessoal. Ressucitando o Topico!

Tb me deu uma de criar uma calculadora, mais imitando a do windows. O negócio é que to com um probleminha de logica.

Quando clico, por exemplo, no botão +, automaticamente a soma pe feita, e não é feita quando eu aperto a outra operação, como deveria ser. Esse problema eu sei o que é, mas nao consegui pensar (quase) numa forma de imitar a calculadora do windows.

Talvez eu não tenha me expressado direito, e se for o caso, favor avisar.

Mas algem tem uma dica?

Comece organizando a tua lógica. Não precisa fazer um método diferente para cada action performed, mas precisaria fazer métodos para cada operação aritmética.

Estude também sobre implementações de “Notação Polonesa Reversa”.

JhowTroMundo

Obrigado, bruno. Esse negocio de postfix realmente é muito interessante, é a implementação parece ser bem mais simples mesmo.

Mas eu gostaria de fazer uma convencional agora.

Nao precisa fazer um actionPerformed pra cada botao?? Bom, eu estou usando o NetBeans pra desenvolver, e é assim que ele faz, e eu nao saberia fazer de outro jeito, por enquanto.

Vou tentar explicar melhor o meu problema.

Uma calculadora normal faz o calculo assim:

Lê primeiro número
lê primeira operação
lê segundo numero
lê segunda operação
realiza primeira operação(primeiro numero e segudo numero)
lê terceiro numero
lê terceira operação
realiza segunda operação ((resultado do primeiro e segundo numero) e o terceiro numero)

e por ai vai.

Essa logica é que to tendo dificuldade de implementar.

A minha está assim:

lê primeiro numero
lê primeira operação
realiza primeira operação (primeiro numero e null)
lê segundo numero
lê segunda operação
realiza segunda operação
lê terceiro numero
lê terceira operação
realiza terceira operação

dá pra entender?

Polimorphism

Se a calculadora vai ser simples pq naum usar um jComboBox com as operações?

B

Simples para ele é calculadora do Windows, e a calculadora do Windows não tem combobox.

Quanto à calculadora, faça deste modo:

A cada vez que ele apertar o botão de alguma operação, ele verifica se há dois números e uma operação em buffer para executar, e as executa.

JhowTroMundo

Polimorph, eu já fiz uma calc mais simples ainda:
http://codepad.org/ufSYWt0u
Nao é a “versão final”, mas ta funcionando.

Bruno, realmente é um caso a se pensar…
Eita calculadorinha braba =x

Obrigado pela dica.
Isso que eu pensei em fazer, mas nao to conseguindo imaginar uma forma… Vou pensar mais um tiquinho.

Valeu.

N

pessoal estou precisando de uma ajuda quem puder me ajudar ai agradeço…

nao estou conseguindo fazer esse programa…

Elabore o Programa Calculadora Distribuída em Corba, utilizando no mínimo duas linguagens de programação, que opere as quatro operações básicas matemáticas (+, -, *, /)

Criado 7 de abril de 2008
Ultima resposta 12 de jun. de 2012
Respostas 25
Participantes 13