Calculadora [Resolvido]

18 respostas
magocebolinha

E ai pessoal… aqui estou eu de novo tentando reaprender java… rsrs

Antigamente estava bem afiado no assunto, mas três anos sem tentar mais nada causaram um sério problema de esquecimento… vamos lá

Estou tentando fazer uma calculadora simples de teste usando a classe Scanner, mas o código que me parecia muito lógico esta gerando 33 erros… ou é algum detalhe que não estou vendo ou esta tudo completamente errado… gostaria que se possível me dissessem o que pode ser feito no codigo!

mport java.util.Scanner;
	
class Calculadora {
	
	static double operMais(){
		
		System.out.println("Digite o primeiro valor para a operação");
		num1 = numeros.nextDouble();
		System.out.println("Digite o primeiro valor para a operação");
		num2 = numeros.nextDouble();
		result = num1 + num2;
	}
	
	static double operMenos(){
		
		System.out.println("Digite o primeiro valor para a operação");
		num1 = numeros.nextDouble();
		System.out.println("Digite o primeiro valor para a operação");
		num2 = numeros.nextDouble();
		result = num1 - num2;
	}
		
	static double operVezes(){
	    System.out.println("Digite o primeiro valor para a operação");
		num1 = numeros.nextDouble();
		System.out.println("Digite o primeiro valor para a operação");
		num2 = numeros.nextDouble();
		result = num1 * num2;
	}	
	
	static double operDiv(){    
		System.out.println("Digite o primeiro valor para a operação");
		num1 = numeros.nextDouble();
		System.out.println("Digite o primeiro valor para a operação");
		num2 = numeros.nextDouble();
		result = num1 / num2;
	}
	
	public static void main (String args[]){
		
        Scanner numeros = new Scanner(System.in);	
		char sinal;
		double num1;
		double num2;
		double result;
		
		
		char [] SINAIS = new char[4];
		
		SINAIS[0] = '+';
		SINAIS[1] = '-';
		SINAIS[2] = '*';
		SINAIS[3] = '/';
		
		System.out.println("Digite o sinal da operação que deseja fazer: ");
		sinal = numeros.next();
		
		
		for (int i=0;i<3;i++){
			
			
			
			if (SINAIS[i].equalsIgnoreCase('+')) {
							
				operMais();
			
			} else if (SINAIS[i].equalsIgnoreCase('-')) { 
									
				operMenos();
			
		    } else if (SINAIS[i].equalsIgnoreCase('*')) {
			    
			    operVezes();
			    
		    } else if (SINAIS[i].equalsIgnoreCase('/')) {
			    
			    operDiv();
			    
		    } else {
			    
			    System.out.println("Você deve digitar uma operação valida, \nexecute o programa e tente novamente.");
		    }   		
		} 
			
	}
}

VLW!! :slight_smile: :smiley: :slight_smile:

18 Respostas

magocebolinha

Pude perceber que os atributos de dentro do metodo main não estão sendo reconhecidos pelos metodos de fora… bom… pra mim ai com certeza tem varios erros… acredito que em relação ao visibilidade dos mesmos…

---------- Capture Output ----------

C:\Program Files (x86)\Java\jdk1.6.0_18\bin\javac.exe Calculadora.java

Calculadora.java:8: cannot find symbol

symbol  : variable num1

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:8: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:10: cannot find symbol

symbol  : variable num2

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:10: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:11: cannot find symbol

symbol  : variable result

location: class Calculadora

result = num1 + num2;

^

Calculadora.java:11: cannot find symbol

symbol  : variable num1

location: class Calculadora

result = num1 + num2;

^

Calculadora.java:11: cannot find symbol

symbol  : variable num2

location: class Calculadora

result = num1 + num2;

^

Calculadora.java:17: cannot find symbol

symbol  : variable num1

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:17: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:19: cannot find symbol

symbol  : variable num2

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:19: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:20: cannot find symbol

symbol  : variable result

location: class Calculadora

result = num1 - num2;

^

Calculadora.java:20: cannot find symbol

symbol  : variable num1

location: class Calculadora

result = num1 - num2;

^

Calculadora.java:20: cannot find symbol

symbol  : variable num2

location: class Calculadora

result = num1 - num2;

^

Calculadora.java:25: cannot find symbol

symbol  : variable num1

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:25: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:27: cannot find symbol

symbol  : variable num2

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:27: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:28: cannot find symbol

symbol  : variable result

location: class Calculadora

result = num1 * num2;

^

Calculadora.java:28: cannot find symbol

symbol  : variable num1

location: class Calculadora

result = num1 * num2;

^

Calculadora.java:28: cannot find symbol

symbol  : variable num2

location: class Calculadora

result = num1 * num2;

^

Calculadora.java:33: cannot find symbol

symbol  : variable num1

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:33: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num1 = numeros.nextDouble();

^

Calculadora.java:35: cannot find symbol

symbol  : variable num2

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:35: cannot find symbol

symbol  : variable numeros

location: class Calculadora

num2 = numeros.nextDouble();

^

Calculadora.java:36: cannot find symbol

symbol  : variable result

location: class Calculadora

result = num1 / num2;

^

Calculadora.java:36: cannot find symbol

symbol  : variable num1

location: class Calculadora

result = num1 / num2;

^

Calculadora.java:36: cannot find symbol

symbol  : variable num2

location: class Calculadora

result = num1 / num2;

^

Calculadora.java:56: incompatible types

found   : java.lang.String

required: char

sinal = numeros.next();

^

Calculadora.java:63: char cannot be dereferenced

if (SINAIS[i].equalsIgnoreCase(+)) {

^

Calculadora.java:67: char cannot be dereferenced

} else if (SINAIS[i].equalsIgnoreCase(-)) {

^

Calculadora.java:71: char cannot be dereferenced

} else if (SINAIS[i].equalsIgnoreCase(*)) {

^

Calculadora.java:75: char cannot be dereferenced

} else if (SINAIS[i].equalsIgnoreCase(/)) {

^

33 errors

Terminated with exit code 1.

R
ola, to numa gambiarra , aqui, melhorou os erros, mas agora na le, vou ver esta classe scanner, pois leio de outras formas, como com joptionpane... pode ser uma boa...
/*
 * Calculadora.java
 *
 * Created on 10 de Janeiro de 2004, 02:45
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package testes;

import java.util.Scanner;   
       
class Calculadora {   
    
    
    //static double num1,num2,numeros,result;
     Scanner numeros = new Scanner(System.in);     
        String sinal;   
        double num1;   
        double num2;   
        double result;   
           
           
        char [] SINAIS = new char[4]; 
        
        
        public Calculadora(){
         SINAIS [0] = '+' ;   
        SINAIS [1] = '-' ;   
        SINAIS [2] = '*' ;   
        SINAIS [3] = '/' ;  
        
         
           
        System.out.println("Digite o sinal da operação que deseja fazer: ");   
        sinal = numeros.next();   
           
           
        for (int i=0;i<3;i++){   
               
               
               
            if (SINAIS [i]=='+') {   
                               
                operMais();   
               
            } else if (SINAIS [i]==('-')) {   
                                       
                operMenos();   
               
            } else if (SINAIS[i]==('*')) {   
                   
                operVezes();   
                   
            } else if (SINAIS[i]==('/')) {   
                   
                operDiv();   
                   
            } else {   
                   
                System.out.println("Você deve digitar uma operação valida, \nexecute o programa e tente novamente.");   
            }             
        }
        }
        
     
        
       
   public void  operMais(){   
           
        System.out.println("Digite o primeiro valor para a operação");   
        num1 = numeros.nextDouble();   
        System.out.println("Digite o primeiro valor para a operação");   
        num2 = numeros.nextDouble();   
        result = num1 + num2;   
    }   
       
    public void  operMenos(){   
           
        System.out.println("Digite o primeiro valor para a operação");   
        num1 = numeros.nextDouble();   
        System.out.println("Digite o primeiro valor para a operação");   
        num2 = numeros.nextDouble();   
        result = num1 - num2;   
    }   
           
   public   void  operVezes(){   
        System.out.println("Digite o primeiro valor para a operação");   
        num1 = numeros.nextDouble();   
        System.out.println("Digite o primeiro valor para a operação");   
        num2 = numeros.nextDouble();   
        result = num1 * num2;   
    }     
       
   public void operDiv(){       
        System.out.println("Digite o primeiro valor para a operação");   
        num1 = numeros.nextDouble();   
        System.out.println("Digite o primeiro valor para a operação");   
        num2 = numeros.nextDouble();   
        result = num1 / num2;   
    }   
       
    public static void main (String args[]){   
           
         
              new Calculadora();
    }   
}
magocebolinha

Bom deixa eu ver se entendi… você colocou o código dentro de uma classe própria e no método main você instanciou o objeto, mas assim ele já executa? e trocou o equals pelo “==”? o que eu não entendi foi na linha 17 a contar do import de classe, a declaração “public Calculadora” inclusive ta dando erro… você pensou em fazer um método ali?

R

CUIDADO!!

== -> Compara a posição na memória (algo assim…)
equals -> Compara o conteúdo

Nesse caso deve usar o equals.

magocebolinha

Pois é… é o que pensei…

R

bem eu fiz funcionar, agora, acho que joption pane é melhor...

so funciona uma vez, se colocar um while, ou uma confirmação, vira loop...

mas vale fazer os botoezinhos, e realmente fazer uma calculadora java...

ora esta...

segue o código...
/*
 * Calculadora.java
 *
 * Created on 10 de Janeiro de 2004, 02:45
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package testes;

import java.util.Scanner;   
import javax.swing.JOptionPane;
       
class Calculadora {   
    
    
    //static double num1,num2,numeros,result;
     Scanner numeros = new Scanner(System.in);     
        String sinal;   
        double num1;   
        double num2;   
        double result;   
           
           
      //  char [] SINAIS = new char[4]; 
        
        
        public Calculadora(){
      
        //SINAIS [0] = '+' ;   
     /////   SINAIS [1] = '-' ;   
      //  SINAIS [2] = '*' ;   
      //  SINAIS [3] = '/' ;  
        
         
     sinal=JOptionPane.showInputDialog("digite o sinal da operação")  ;
                    
            if (sinal.equals("+")) {   
                               
                operMais();   
               
            } else if (sinal.equals("-")) {   
                                       
                operMenos();   
               
            } else if (sinal.equals("*")) {   
                   
                operVezes();   
                   
            } else if (sinal.equals("/")) {   
                   
                operDiv();   
                   
            } else {   
                   
                System.out.println("Você deve digitar uma operação valida, \nexecute o programa e tente novamente.");   
            }             
        }
        
        
     
        
       
   public void  operMais(){   
           
               
    num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     
       num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );  
    
        result = num1 + num2;   
        
        
        JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }   
       
    public void  operMenos(){   
           
       num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     
       num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );  
    
      
        result = num1 - num2;   
         JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }   
           
   public   void  operVezes(){   
       num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     
       num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );  
        result = num1 * num2;   
         JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }     
       
   public void operDiv(){       
       num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     
       num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );  
        result = num1 / num2;   
         JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }   
       
    public static void main (String args[]){   
           
         
              new Calculadora();
    }   
}
S

Dei uma mexida na sua classe mesmo, lendo via prompt de comando.
Dê uma olhada nas mudanças.

import java.util.Scanner;

class Calculadora {  
    
	static double num1, num2, result;
	static Scanner numeros;
	
	public static void main (String args[]){  
        
        numeros = new Scanner(System.in);     
        char sinal;  
        double num1;  
        double num2;  
        double result;  
          
        char [] s = new char[4];  
          
        s[0] = '+';  
        s[1] = '-';  
        s[2] = '*';  
        s[3] = '/';  
          
        System.out.println("Digite o sinal da operação que deseja fazer: ");
        String aux = numeros.next();
        sinal = aux.charAt(0);
        
        switch(sinal){
     	   case'+':
     		   System.out.println(operMais());
     		   break;
     	   case'-':
     		   System.out.println(operMenos());
     		   break;
     	   case'*':
     		   System.out.println(operVezes());
     		   break;
     	   case'/':
     	   	   System.out.println(operDiv());
     	   	   break;
        }
              
    }
	
    static double operMais(){  
          
        System.out.println("Digite o primeiro valor para a operação");  
        num1 = numeros.nextDouble();  
        System.out.println("Digite o segundo valor para a operação");  
        num2 = numeros.nextDouble();  
        return (num1 + num2);  
    }  
      
    static double operMenos(){  
          
        System.out.println("Digite o primeiro valor para a operação");  
        num1 = numeros.nextDouble();  
        System.out.println("Digite o primeiro valor para a operação");  
        num2 = numeros.nextDouble();  
        return (num1 - num2);  
    }  
          
    static double operVezes(){  
        System.out.println("Digite o primeiro valor para a operação");  
        num1 = numeros.nextDouble();  
        System.out.println("Digite o primeiro valor para a operação");  
        num2 = numeros.nextDouble();  
        return (num1 * num2);  
    }     
      
    static double operDiv(){      
        System.out.println("Digite o primeiro valor para a operação");  
        num1 = numeros.nextDouble();  
        System.out.println("Digite o primeiro valor para a operação");  
        num2 = numeros.nextDouble();  
        return (num1 / num2);  
    } 
}

Atenciosamente.

pedroroxd
Eu faria dessa forma: (Comentei para ficar melhor pra vc ver)
import java.util.Scanner; //importando scanner

public class Calculadora {

	public static void main(String[] args) {

		double num1, num2, result = 0; //declarando o numero 1, numero 2, e o resultado (respectivamente)
		int op; // op seria a operação que a pessoa deseja fazer
		Scanner scnnumeros = new Scanner(System.in); //declarando um scanner chamado scnnumeros, e instanciando-o

		System.out.println("Digite um número: ");
		num1 = scnnumeros.nextDouble(); // o scanner le, passa para double, e armazena o numero na variável n1
		System.out.println("Digite a operação: (+,-,*,/)");
		op = scnnumeros.next().charAt(0); // o scanner le (tá em string), e pega o que está na posição 0 (pq o op tem que ser int para dar o switch)
		System.out.println("Digite o segundo número: ");
		num2 = scnnumeros.nextDouble(); // o scanner le, passa para double, e armazena o numero na variável n2
 
		switch (op) { //dando switch na operação.Muitas vezes melhor do que vários ifs
		case '+': //se for "+", ele faz a operação 
			result = num1 + num2;
			break; // se entrou nessa condição, ele dá o break (não entra em + nenhuma)
		case '-':
			result = num1 - num2;
			break;
		case '*':
			result = num1 * num2;
			break;
		case '/':
			result = num1 / num2;
			break;
		}
		System.out.println();
		System.out.println("O resultado é: " + result);
	}
}
R

resolvi fazer a calculadora com botoes, como exercicio, alguem tambem se habilita...

segue o codigo como esta ... esta dando erro no botao por enquanto...

/*
 * Calculadora.java
 *
 * Created on 10 de Janeiro de 2004, 02:45
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package testes;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Calculadora  extends JFrame implements ActionListener{
    
    
    JButton mais=new JButton("+");
    JButton menos=new JButton("-");
    JButton vezes=new JButton("*");
    JButton dividir=new JButton("/");
    JButton zero=new JButton("0");
    JButton um=new JButton("1");
    JButton dois=new JButton("2");
    JButton tres=new JButton("3");
    JButton quatro=new JButton("4");
    JButton cinco=new JButton("5");
    JButton seis=new JButton("6");
    JButton sete=new JButton("7");
    JButton oito=new JButton("8");
    JButton nove=new JButton("9");
    //static double num1,num2,numeros,result;
    Scanner numeros = new Scanner(System.in);
    String sinal;
    double num1;
    double num2;
    double result;
    
    JTextField mostrador;
    
     JPanel calc;
    
    public Calculadora(){
        
        setTitle("calculadora guj");
        setResizable(true);
        setSize(600, 600);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setBackground(Color.yellow);
        
        
         calc= new JPanel();
        calc.setLayout( new GridLayout(5,3));
        mostrador= new JTextField();
        mostrador.setSize(100,20);
        calc.add(mostrador);
       
         
            calc.add(um);
             calc.add(dois);
              calc.add(tres);
               calc.add(quatro);
                calc.add(cinco);
                 calc.add(seis);
                  calc.add(sete);
                   calc.add(oito);
                    calc.add(nove);
                      calc.add(zero);
                       calc.add(mais);
        calc.add(menos);
         calc.add(vezes);
          calc.add(dividir);
                    
                    add(calc);
                    
                    mais.addActionListener(this);
                     mais.addActionListener(this);
                      mais.addActionListener(this);
                       mais.addActionListener(this);
                        mais.addActionListener(this);
                         mais.addActionListener(this);
                          mais.addActionListener(this);
                           mais.addActionListener(this);
                            mais.addActionListener(this);
                             mais.addActionListener(this);
                              mais.addActionListener(this);
                               mais.addActionListener(this);
                                mais.addActionListener(this);
                                 mais.addActionListener(this);
                    
       
    
    
    
    }
    
     public void actionPerformed(ActionEvent e) {
        if (e.getSource() == mais) {
            operMais();
        }
        if (e.getSource() == menos) {
            operMenos();
        }
        if (e.getSource() == dividir) {
            operDiv();
        }
        if (e.getSource() == vezes) {
            operVezes();
        }
         if (e.getSource() == zero) {
           
        }
         if (e.getSource() == um) {
          mostrador.setText("1");
        }
         if (e.getSource() == dois) {
          mostrador.setText("2");
        }
         if (e.getSource() == tres) {
           
        }
    
     }
    
    
    
      
    public void  operMais(){
       
        
     //   num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     //   num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );
      
        String trabalho=mostrador.getText();
       if (trabalho!=""){
       num1= Integer.parseInt(mostrador.getText());
       mostrador.setText(""); 
       num2= Integer.parseInt(mostrador.getText());
       result = num1 + num2;
       JOptionPane.showMessageDialog(null,"resultado e :"+result);
       mostrador.setText(""+result);}
        
      
    }
    
    public void  operMenos(){
        
        num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
        
        num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );
        
        
       
    }
    
    public   void  operVezes(){
        num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
        
        num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );
        result = num1 * num2;
        JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }
    
    public void operDiv(){
     num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
       
       num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );
      
        
        result = num1 / num2;
        JOptionPane.showMessageDialog(null,"resultado e :"+result);
    }
    
    
    
    public static void main(String args[]){
        
        
        new Calculadora().setVisible(true);
    }
}
magocebolinha

Santos e pedro valew mesmo… eu nem me lembrava do detalhe do método charAt(); e tinha esquecido completamente de ultilizar o switch/case… ah… ragly o seu eu n consegui executar aqui não exatamente por aquele (acho eu) começo de metodo da linha 17 que te disse… e neste caso n estou usando JOption exatamente por qu estou testando a classe Scanner! mas deqquer forma vlw pela ajuda… vou colocar resolvido no titulo… até! 8) :smiley:

R

bem como eu fiz com joptionpane, funcionou, nao é esta última postagem.
em todo caso ,existem varios metodos, como disse eu faria, daquela forma, ali, seguindo seu modelo.
em todo caso, apareceram outras opções aqui, neste pequeno momento, uma coisa ali, as variaveis nao eram vistas.
quanto a questao estatica, quando pomos em metodos como eu fiz, sempre some este problema.
mas são pontos interessantes de estudo.
eu me interessei em fazer a calculadora com botoes, vcs ou alguem nao tem interesse em fazer ou ver pronta,

tambem como tema de estudo se for o caso, apesar de ter suas utilidades também… e se quisermos
até a construção de uma cientifica ou com outros calculos, nao que eu precise, mas o assunto surgiu.

acho que vale de tópico. nao querendo abrir um novo post, sobre isso… alguem acha alguma coisa?

valeu.

R
o codigo ficou assim.. nao estou conseguindo fazer o botao, setar o numero como string... nao sei porque... e o igual, vai pegar o num1 o sinal e somar ao 2, que ele capturou por ultimo... segue o codigo... so falta setar os numeros que deveriam funcionar... "danados"...
/*
 * Calculadora.java
 *
 * Created on 10 de Janeiro de 2004, 02:45
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package testes;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Calculadora  extends JFrame implements ActionListener{
    
    
    JButton mais=new JButton("+");
    JButton menos=new JButton("-");
    JButton vezes=new JButton("*");
    JButton dividir=new JButton("/");
    JButton zero=new JButton("0");
    JButton um=new JButton("1");
    JButton dois=new JButton("2");
    JButton tres=new JButton("3");
    JButton quatro=new JButton("4");
    JButton cinco=new JButton("5");
    JButton seis=new JButton("6");
    JButton sete=new JButton("7");
    JButton oito=new JButton("8");
    JButton nove=new JButton("9");
     JButton igual=new JButton("=");
    //static double num1,num2,numeros,result;
    Scanner numeros = new Scanner(System.in);
    String sinal;
   int num1;
    int  num2;
    int result;
    
    JTextField mostrador;
    
     JPanel calc;
    
    public Calculadora(){
        
        setTitle("calculadora guj");
        setResizable(true);
        setSize(600, 600);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setBackground(Color.yellow);
        
        
         calc= new JPanel();
        calc.setLayout( new GridLayout(5,3));
        mostrador= new JTextField("0");
        mostrador.setSize(100,20);
        calc.add(mostrador);
       
         
            calc.add(um);
             calc.add(dois);
              calc.add(tres);
               calc.add(quatro);
                calc.add(cinco);
                 calc.add(seis);
                  calc.add(sete);
                   calc.add(oito);
                    calc.add(nove);
                      calc.add(zero);
                       calc.add(mais);
                       calc.add(igual);
        calc.add(menos);
         calc.add(vezes);
          calc.add(dividir);
                    
                    add(calc);
                    
                    mais.addActionListener(this);
                     mais.addActionListener(this);
                      mais.addActionListener(this);
                       mais.addActionListener(this);
                        mais.addActionListener(this);
                         mais.addActionListener(this);
                          mais.addActionListener(this);
                           mais.addActionListener(this);
                            mais.addActionListener(this);
                             mais.addActionListener(this);
                              mais.addActionListener(this);
                               mais.addActionListener(this);
                                mais.addActionListener(this);
                                 mais.addActionListener(this);
                    
       
    
    String tra=mostrador.getText();
    System.out.println("TRA"+tra);
    
    }
    
     public void actionPerformed(ActionEvent e) {
        if (e.getSource() == mais) {
            operMais();
        }
        if (e.getSource() == menos) {
            operMenos();
        }
        if (e.getSource() == dividir) {
            operDiv();
        }
        if (e.getSource() == vezes) {
            operVezes();
        }
         if (e.getSource() == zero) {
           
        }
         if (e.getSource() == "um") {
         // mostrador.setText("1");
            um();
        }
         if (e.getSource() == "dois") {
       
          mostrador.setText("2");
        }
         if (e.getSource() == tres) {
           
        }
    
     }
    
   
    public void um(){
        mostrador.setText("1");  
    }
    
      
    public void  operMais(){
       
        
     //   num1=Double.parseDouble(JOptionPane.showInputDialog("digite o primeiro valor"))  ;
     //   num2=Double.parseDouble(JOptionPane.showInputDialog("digite o segundo valor")  );
      
       
       num1= Integer.parseInt(mostrador.getText());
        sinal="+";
        String tra=mostrador.getText();
         System.out.println("TRA"+tra);
          System.out.println("sinal"+sinal); 
      
    }
    
    public void  operMenos(){
     num1= Integer.parseInt(mostrador.getText());
       sinal="+";
     
           String tra=mostrador.getText();
    System.out.println("TRA"+tra);
     System.out.println("sinal"+sinal);
       
       
    }
    
    public   void  operVezes(){
    num1= Integer.parseInt(mostrador.getText());
        sinal="+";
        String tra=mostrador.getText();
         System.out.println("TRA"+tra);
          System.out.println("sinal"+sinal); 
    }
    
    public void operDiv(){
 num1= Integer.parseInt(mostrador.getText());
        sinal="+";
        String tra=mostrador.getText();
         System.out.println("TRA"+tra);
          System.out.println("sinal"+sinal); 
        
        
        
    }
    

    public static void main(String args[]){
        
        
        new Calculadora().setVisible(true);
    }
}

acho interessante, fazer...

pedroroxd

Até, e ve se dessa vez não para de estudar! kkkk

R

ola, resolvi fazer a calculadora com botoes, e fiz. ficou bem legal. se melhorar o visual, fica nota 10.
nao que nao esteje bom, mas posso melhorar um pouco, colocando um nome, um gráfico etc...

vou ver, por enquanto la vai o codigo...

abraço. valeu o estudo... segue aí boas dicas para quem é do java basico, avançado, enfim...
/*
 * Calculadora.java
 *
 * Created on 10 de Janeiro de 2004, 02:45
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package testes;

import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

class Calculadora  extends JFrame implements ActionListener{
    
    
        JButton espaco=new JButton("");
        JButton espaco2=new JButton("");
         JButton espaco3=new JButton("");
        
    
    
    JButton mais=new JButton("+");
  
  
   
    JButton menos=new JButton("-");
    
    
     
    JButton vezes=new JButton("*");
    JButton dividir=new JButton("/");
    JButton zero=new JButton("0");
    JButton um=new JButton("1");
    JButton dois=new JButton("2");
    JButton tres=new JButton("3");
    JButton quatro=new JButton("4");
    JButton cinco=new JButton("5");
    JButton seis=new JButton("6");
    JButton sete=new JButton("7");
    JButton oito=new JButton("8");
    JButton nove=new JButton("9");
     JButton igual=new JButton("=");
          JButton CE=new JButton("CE");
    //static double num1,num2,numeros,result;
    Scanner numeros = new Scanner(System.in);
    String sinal;
   int num1;
    int  num2;
    int result;
    
    JTextField mostrador;
    
     JPanel calc;
    
    public Calculadora(){
        
        setTitle("calculadora guj");
        setResizable(true);
        setSize(600, 600);
        
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setBackground(Color.yellow);
        
       mais.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     menos.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      vezes.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     dividir.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      zero.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     um.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      dois.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     tres.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      quatro.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     cinco.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
      seis.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     sete.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
         oito.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     nove.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
     igual.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );

   
        
        
         calc= new JPanel();
        calc.setLayout( new GridLayout(5,3));
        mostrador= new JTextField("");
        mostrador.setSize(100,20);
             mostrador.setFont (new Font ("Sans Serif", Font.BOLD,28 ) );
        
        
        
        calc.add(mostrador);
        
     
         
            calc.add(um);
             calc.add(dois);
              calc.add(tres);
               calc.add(quatro);
                calc.add(cinco);
                 calc.add(seis);
                  calc.add(sete);
                   calc.add(oito);
                    calc.add(nove);
                      calc.add(zero);
                       calc.add(mais);
                       
        calc.add(menos);
         calc.add(vezes);
          calc.add(dividir);
                        calc.add(igual);
              calc.add(CE);
              
              
              calc.add(espaco);
              calc.add(espaco2);
              calc.add(espaco3);
          
                    
                    add(calc);
                     CE.addActionListener(this);
                    mais.addActionListener(this);
                     menos.addActionListener(this);
                      vezes.addActionListener(this);
                       dividir.addActionListener(this);
                        igual.addActionListener(this);
                         zero.addActionListener(this);
                         um.addActionListener(this);
                           dois.addActionListener(this);
                            tres.addActionListener(this);
                             quatro.addActionListener(this);
                              cinco.addActionListener(this);
                               seis.addActionListener(this);
                                sete.addActionListener(this);
                                 oito.addActionListener(this);
                                 nove.addActionListener(this);                                 
                    
       
    
  
    
    }
    
     public void actionPerformed(ActionEvent e) {
        
          if (e.getSource() == CE) {
           CE();
        }
         
         
         if (e.getSource() == mais) {
            operMais();
        }
        if (e.getSource() == menos) {
            operMenos();
        }
        if (e.getSource() == dividir) {
            operDiv();
        }
        if (e.getSource() == vezes) {
            operVezes();
        }
         if (e.getSource() == zero) {
           
            String apice= mostrador.getText(); 
            String vaiLa=apice+"0";
            mostrador.setText(vaiLa); 
           
        }
         if (e.getSource() == um) {
        String apice2= mostrador.getText(); 
            String vaiLa2=apice2+"1";
            mostrador.setText(vaiLa2); 
        }
         if (e.getSource() == dois) {
        String apice3= mostrador.getText(); 
            String vaiLa3=apice3+"2";
         mostrador.setText(vaiLa3); 
        }
         if (e.getSource() == tres) {
             String apice4= mostrador.getText(); 
            String vaiLa4=apice4+"3";
             mostrador.setText(vaiLa4);  
        }
          if (e.getSource() == quatro) {
             String apice5= mostrador.getText(); 
            String vaiLa5=apice5+"4";
              mostrador.setText(vaiLa5);  
        }
          if (e.getSource() == cinco) {
             String apice6= mostrador.getText(); 
            String vaiLa6=apice6+"5";
              mostrador.setText(vaiLa6);  
        }
          if (e.getSource() == seis) {
             String apice7= mostrador.getText(); 
            String vaiLa7=apice7+"6";
            mostrador.setText(vaiLa7);   
        }
          
          if (e.getSource() == sete) {
             String apice8= mostrador.getText(); 
            String vaiLa8=apice8+"7";
              mostrador.setText(vaiLa8);   
        }
          if (e.getSource() == oito) {
             String apice9= mostrador.getText(); 
            String vaiLa9=apice9+"8";
              mostrador.setText(vaiLa9); 
        }
        if (e.getSource() == nove) {
             String apice10= mostrador.getText(); 
            String vaiLa10=apice10+"9";
               mostrador.setText(vaiLa10);  
        }
        
        if (e.getSource() == igual) {
             igual();    
        }
    // String apice= "";
      //      String vaiLa="";
            
     }
    
   
    public void um(){
        mostrador.setText("1");  
    }
    
    
    public void igual() {
        
        if (sinal.equals("+")) {   
           // mostrador.setText("");
            num2=Integer.parseInt(mostrador.getText());
            result=num1+num2;
          //  mostrador.setText("");
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
       
           
            
        if (sinal.equals("-")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1-num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
            
            
            
       
        if (sinal.equals("*")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1*num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
        if (sinal.equals("/")) {            
            num2=Integer.parseInt(mostrador.getText());
            result=num1/num2;
            mostrador.setText(""+result);
            num1=0;
            num2=0;
        }
        
        
    }
    
   
    public void  operMais(){
       
    
      
       
       num1= Integer.parseInt(mostrador.getText());
        sinal="+";
        mostrador.setText("");
      
      
    }
    
    public void  operMenos(){
     num1= Integer.parseInt(mostrador.getText());
       sinal="-";
       mostrador.setText("");
       
       
       
    }
    
    public   void  operVezes(){
    num1= Integer.parseInt(mostrador.getText());
        sinal="*";
          mostrador.setText("");
      
    }
    
    public void operDiv(){
 num1= Integer.parseInt(mostrador.getText());
        sinal="/";
          mostrador.setText("");
       
        
        
        
    }
    public void CE() {
        mostrador.setText(""); 
    }
    
    
    
    public static void main(String args[]){
        
        
        new Calculadora().setVisible(true);
    }
}
magocebolinha

Até, e ve se dessa vez não para de estudar! kkkk

rsrsrs…dessa vez não… quero só relembrar pra começar no J2EE… hehe… vlw!

magocebolinha
pedroroxd:
Eu faria dessa forma: (Comentei para ficar melhor pra vc ver)
import java.util.Scanner; //importando scanner

public class Calculadora {

	public static void main(String[] args) {

		double num1, num2, result = 0; //declarando o numero 1, numero 2, e o resultado (respectivamente)
		int op; // op seria a operação que a pessoa deseja fazer
		Scanner scnnumeros = new Scanner(System.in); //declarando um scanner chamado scnnumeros, e instanciando-o

		System.out.println("Digite um número: ");
		num1 = scnnumeros.nextDouble(); // o scanner le, passa para double, e armazena o numero na variável n1
		System.out.println("Digite a operação: (+,-,*,/)");
		op = scnnumeros.next().charAt(0); // o scanner le (tá em string), e pega o que está na posição 0 (pq o op tem que ser int para dar o switch)
		System.out.println("Digite o segundo número: ");
		num2 = scnnumeros.nextDouble(); // o scanner le, passa para double, e armazena o numero na variável n2
 
		switch (op) { //dando switch na operação.Muitas vezes melhor do que vários ifs
		case '+': //se for "+", ele faz a operação 
			result = num1 + num2;
			break; // se entrou nessa condição, ele dá o break (não entra em + nenhuma)
		case '-':
			result = num1 - num2;
			break;
		case '*':
			result = num1 * num2;
			break;
		case '/':
			result = num1 / num2;
			break;
		}
		System.out.println();
		System.out.println("O resultado é: " + result);
	}
}

A propósito Pedro... neste mesmo caso se eu quiser fazer algo ao final do tipo "Deseja fazer outra operação? y/n" eu teria de criar outra variavel associala a um novo next do Scanner usando os if's como verificação booleana, mas qual instrução faria com que ele voltasse a fazer novamente o processo?por acaso o comando "return"?

tgmarinho

um do{ }while(condicao)
seria uma boa alternativa, vou tentar programar uma aq ^^
pq é um laço neh q executa pelo menos uma vez, e no final verifica a condição.

tgmarinho
import java.util.Scanner; //importando scanner  
  
public class Operacoes
{  
    public static void main(String[] args) 
    {  
        
    	double num1, num2, result = 0;
        int op; 
        Scanner scnnumeros = new Scanner(System.in);  
  
        boolean continua = false;
        
        do{
        System.out.println("Digite um número: ");  
        num1 = scnnumeros.nextDouble();   
        System.out.println("Digite a operação: (+,-,*,/)");  
        op = scnnumeros.next().charAt(0); 
        System.out.println("Digite o segundo número: ");  
        num2 = scnnumeros.nextDouble(); 
  
        switch (op) 
        { 
        case '+': 
            result = num1 + num2;  
            break;  
        case '-':  
            result = num1 - num2;  
            break;  
        case '*':  
            result = num1 * num2;  
            break;  
        case '/':  
            result = num1 / num2;  
            break;  
        }  
        	System.out.println();  
        	System.out.println("O resultado é: " + result);  
        	
        	
      
        		System.out.printf("\n \nVocê deseja calcular mais uma conta: (s|n)");
        		
        		
        		op = scnnumeros.next().charAt(0); 
        		
        		switch (op)
        		{
        		case 's':
        				 continua = false; 
        				 break;
        		
        		case 'n':
        				 continua = true;
        				 System.out.printf("Obrigado! Volte Sempre");
        				 break;	
        		}
        		       	        
        } while(continua == false);
    }

	
	}

resolvido, agora vc faz qntas vezes quiser, basta escolher s //permanece fazendo, e n //para o calculo

Criado 25 de março de 2010
Ultima resposta 26 de mar. de 2010
Respostas 18
Participantes 6