Calculadora

9 respostas
F

Ola galera.

Sou novo em java e to lendo o livro da Deitel 4ª edição.

To fazendo um projetinho de soma e queria que vcs me falassem oq esta errado nele.

olha ele ai:

// Fig. 2.9: Addition.java
// Imprimindo linhas em uma caixa de dialogo

//pacotes de extensao de Java
import javax.swing.JOptionPane; // importa a classe JOptionPane

public class Addition {

// o método main inicia a execução do aplicativo Java

public static void main(String args [])

{

String firstNumber, // primeiro string inserido pelo usuario

secondNumber; // segundo string inserido pelo usuario

int number1, // primeiro numero a somar

int number2, // segundo numero a somar

int sum; // soma de number1 e number2
// le o primeiro numero do usuario como um string
   firstNumber =
		   JOptionPane.showInputDialog( "Digite o primeiro número.");
   		   
   //le o segundo numero do usuario como uma string
   secondNumber =
		   JOptioPane.showInputDialog( "Digite o segundo número.");
   //converte os numeros do tipo String para o tipo int
   number1 = Interger.parseInt( firstNumber );
   number2 = Interger.parseInt( secondNumber );
   
   //soma os numeros
   sum = number1 + number2;
   
   //exibe os resultados
   JOptionPane.showMessageDialog(
		   null, "O resultado é" + sum, "Resultado",
		   JOptionPane.PLAIN_MESSAGE);
   
   
   System.exit(0); // termina o aplicativo

} // fim do método main

} // fim da classe Addition4

14: error: expected

15: error: not a statment

15: error: ‘;’ expected

Vlw! :smiley:

9 Respostas

ViniGodoy

Ao postar códigos, use a tag code como descrito aqui:

Linhas em java terminam com ; e não com vírgula. Corrija as linhas:

int number1, // primeiro numero a somar int number2, // segundo numero a somar

Para:

int number1; // primeiro numero a somar int number2; // segundo numero a somar

Outra opção (menos elegante) é usar a vírgula, mas daí sem repetir o tipo de dados:

int number1, number2;

PS: Também fica mais elegante se você declarar as variáveis o mais próximo possíveis de onde for usa-las. Java não é C, portanto, não há necessidade de declarar tudo no início do programa.

vitorgp.ti

Boa noite!

só uma dica: já que você é iniciante, como eu, porque não faz uma calculadora com switch / case ? É bastante legal pra começar! (;

:slight_smile:

F

ViniGodoy:
Ao postar códigos, use a tag code como descrito aqui:

Linhas em java terminam com ; e não com vírgula. Corrija as linhas:

int number1, // primeiro numero a somar int number2, // segundo numero a somar

Para:

int number1; // primeiro numero a somar int number2; // segundo numero a somar

Outra opção (menos elegante) é usar a vírgula, mas daí sem repetir o tipo de dados:

int number1, number2;

PS: Também fica mais elegante se você declarar as variáveis o mais próximo possíveis de onde for usa-las. Java não é C, portanto, não há necessidade de declarar tudo no início do programa.

eu ja tentei isso.

mas no livro da deitel ta com virgula.

qndo coloco ponto e virgula da outros erros.

alguma sugestao?

S

Vamos ver se dá certo?

Tente executar esse código.

// Fig. 2.9: Addition.java 
// Imprimindo linhas em uma caixa de dialogo 

//pacotes de extensao de Java 
import javax.swing.JOptionPane; // importa a classe JOptionPane 

public class Addition { 

// o método main inicia a execução do aplicativo Java 
public static void main(String args []) 
{ 
String firstNumber; // primeiro string inserido pelo usuario 
String secondNumber; // segundo string inserido pelo usuario 
int number1,number2;
int sum; // soma de number1 e number2 

// le o primeiro numero do usuario como um string 
firstNumber = JOptionPane.showInputDialog( "Digite o primeiro número."); 

//le o segundo numero do usuario como uma string 
secondNumber = JOptioPane.showInputDialog( "Digite o segundo número."); 
//converte os numeros do tipo String para o tipo int 
number1 = Interger.parseInt( firstNumber ); 
number2 = Interger.parseInt( secondNumber ); 

//soma os numeros 
sum = number1 + number2; 

//exibe os resultados 
JOptionPane.showMessageDialog( null, "O resultado é" + sum); 


System.exit(0); // termina o aplicativo 

} // fim do método main 

} // fim da classe Addition4
Eider

Bom acho que você já deve ter dado volta nesse problema, mas vamos lá.
Fora os outros erros que foram postados.

//le o segundo numero do usuario como uma string secondNumber =JOptionPane.showInputDialog( "Digite o segundo número.");
Você havia escrito JOptioPane.

//converte os numeros do tipo String para o tipo int number1 = Integer.parseInt( firstNumber ); number2 = Integer.parseInt( secondNumber );
você havia escrito interger.
faz isso que funciona de Boa.

aechiara

fabiio2:
ViniGodoy:
Ao postar códigos, use a tag code como descrito aqui:

Linhas em java terminam com ; e não com vírgula. Corrija as linhas:

int number1, // primeiro numero a somar int number2, // segundo numero a somar

Para:

int number1; // primeiro numero a somar int number2; // segundo numero a somar

Outra opção (menos elegante) é usar a vírgula, mas daí sem repetir o tipo de dados:

int number1, number2;

PS: Também fica mais elegante se você declarar as variáveis o mais próximo possíveis de onde for usa-las. Java não é C, portanto, não há necessidade de declarar tudo no início do programa.

eu ja tentei isso.

mas no livro da deitel ta com virgula.

qndo coloco ponto e virgula da outros erros.

alguma sugestao?

neste trecho aqui:

//converte os numeros do tipo String para o tipo int   
number1 = Interger.parseInt( firstNumber );   
number2 = Interger.parseInt( secondNumber );

ao invés de Interger o correto é Integer

E
  1. Você pode ter pegado um xerox bem tosco ou um PDF mal-escaneado e está confundindo a vírgula com ponto-e-vírgula. Isso não é raro de acontecer. Cuidado que os livros não são infalíveis :slight_smile:
  2. Você pode ter pegado uma tradução tosca (como costumam ser as traduções para o português) onde as coisas foram mal-copiadas. (Acho estranho estar ocorrendo isso com o livro do Deitel - pela editora que o publica em português, acho um pouco difícil ter erros tão grotescos. Normalmente tal problema pode ocorrer com outras editoras.)
  3. Pode ser que o livro esteja “bugado” mesmo - só que o nome da correção de bugs em livros se chama “errata” e talvez você tenha de consultar a “errata”.
RiQuInHo_

fala ai cara, pq vc n pega os livros mais recentes do deitel tipo a 6 edição]]

public class Calculadora extends JFrame implements ActionListener {

    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JButton somar, subtrair, multiplicar, dividir, limpar, voltar, igual, ponto;
    private JButton bt0, bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9;
    private JTextField tfVisor;
    private double n1, n2;
    private char operacao = ' ';
    private boolean segundo = true;
    private boolean utd = false;

    public Calculadora() {
        //Ajuste do formulário
        setTitle("Calculadora");
        setSize(245, 260);
        setLocation(WIDTH, WIDTH);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);
        getContentPane().setLayout(null);
        setLocationRelativeTo(null);
        

        //Inicialização dos botões
        somar = new JButton("+");
        subtrair = new JButton("-");
        multiplicar = new JButton("*");
        dividir = new JButton("/");
        limpar = new JButton("CE");
        voltar = new JButton("Backspace");
        igual = new JButton("=");
        ponto = new JButton(",");
        bt0 = new JButton("0");
        bt1 = new JButton("1");
        bt2 = new JButton("2");
        bt3 = new JButton("3");
        bt4 = new JButton("4");
        bt5 = new JButton("5");
        bt6 = new JButton("6");
        bt7 = new JButton("7");
        bt8 = new JButton("8");
        bt9 = new JButton("9");
        tfVisor = new JTextField();

        //Posicionar componentes no formulário
        tfVisor.setBounds(10, 10, 220, 40);

        voltar.setBounds(10, 55, 160, 30);
        limpar.setBounds(180, 55, 50, 30);

        bt7.setBounds(10, 90, 50, 30);
        bt8.setBounds(65, 90, 50, 30);
        bt9.setBounds(120, 90, 50, 30);
        dividir.setBounds(180, 90, 50, 30);

        bt4.setBounds(10, 125, 50, 30);
        bt5.setBounds(65, 125, 50, 30);
        bt6.setBounds(120, 125, 50, 30);
        multiplicar.setBounds(180, 125, 50, 30);

        bt1.setBounds(10, 160, 50, 30);
        bt2.setBounds(65, 160, 50, 30);
        bt3.setBounds(120, 160, 50, 30);
        subtrair.setBounds(180, 160, 50, 30);

        bt0.setBounds(10, 195, 50, 30);
        ponto.setBounds(65, 195, 50, 30);
        igual.setBounds(120, 195, 50, 30);
        somar.setBounds(180, 195, 50, 30);

        //Cores dos componentes
        bt0.setForeground(Color.BLUE);
        bt1.setForeground(Color.BLUE);
        bt2.setForeground(Color.BLUE);
        bt3.setForeground(Color.BLUE);
        bt4.setForeground(Color.BLUE);
        bt5.setForeground(Color.BLUE);
        bt6.setForeground(Color.BLUE);
        bt7.setForeground(Color.BLUE);
        bt8.setForeground(Color.BLUE);
        bt9.setForeground(Color.BLUE);
        ponto.setForeground(Color.BLUE);

        somar.setForeground(Color.red);
        subtrair.setForeground(Color.red);
        multiplicar.setForeground(Color.red);
        dividir.setForeground(Color.red);
        igual.setForeground(Color.red);
        limpar.setForeground(Color.red);
        voltar.setForeground(Color.red);

        tfVisor.setHorizontalAlignment(JTextField.RIGHT);

        //Registro de componentes que executam ações

        bt0.addActionListener(this);
        bt1.addActionListener(this);
        bt2.addActionListener(this);
        bt3.addActionListener(this);
        bt4.addActionListener(this);
        bt5.addActionListener(this);
        bt6.addActionListener(this);
        bt7.addActionListener(this);
        bt8.addActionListener(this);
        bt9.addActionListener(this);
        somar.addActionListener(this);
        subtrair.addActionListener(this);
        multiplicar.addActionListener(this);
        dividir.addActionListener(this);
        igual.addActionListener(this);
        limpar.addActionListener(this);
        voltar.addActionListener(this);
        ponto.addActionListener(this);

        //Colocar os componentes no formulário
        this.getContentPane().add(somar);
        this.getContentPane().add(subtrair);
        this.getContentPane().add(multiplicar);
        this.getContentPane().add(dividir);
        this.getContentPane().add(tfVisor);
        this.getContentPane().add(bt0);
        this.getContentPane().add(bt1);
        this.getContentPane().add(bt2);
        this.getContentPane().add(bt3);
        this.getContentPane().add(bt4);
        this.getContentPane().add(bt5);
        this.getContentPane().add(bt6);
        this.getContentPane().add(bt7);
        this.getContentPane().add(bt8);
        this.getContentPane().add(bt9);
        this.getContentPane().add(igual);
        this.getContentPane().add(limpar);
        this.getContentPane().add(voltar);
        this.getContentPane().add(dividir);
        this.getContentPane().add(ponto);
    }

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

    public void actionPerformed(ActionEvent acao) {
        if (acao.getSource() == bt0) {
            if (tfVisor.getText().equals("")) {
                return;
            } else {
                numDigi("0");
            }
        } else if (acao.getSource() == bt1) {
            numDigi("1");
        } else if (acao.getSource() == bt2) {
            numDigi("2");
        } else if (acao.getSource() == bt3) {
            numDigi("3");
        } else if (acao.getSource() == bt4) {
            numDigi("4");
        } else if (acao.getSource() == bt5) {
            numDigi("5");
        } else if (acao.getSource() == bt6) {
            numDigi("6");
        } else if (acao.getSource() == bt7) {
            numDigi("7");
        } else if (acao.getSource() == bt8) {
            numDigi("8");
        } else if (acao.getSource() == bt9) {
            numDigi("9");
        } else if (acao.getSource() == ponto) {
            decimal();
        }
        if (acao.getSource() == limpar) {
            tfVisor.setText("");
            operacao = ' ';
            segundo = true;
            utd = false;
            n1 = 0;
            n2 = 0;
        }
        if (acao.getSource() == voltar) {
            int tam = tfVisor.getText().length();
            if (tam > 0) {
                tfVisor.setText(tfVisor.getText().substring(0, tam - 1));
            } else {
                return;
            }
        }
        if (acao.getSource() == somar) {
            igual();
            calcular('+');
        }
        if (acao.getSource() == subtrair) {
            igual();
            calcular('-');
        }
        if (acao.getSource() == multiplicar) {
            igual();
            calcular('*');
        }
        if (acao.getSource() == dividir) {
            igual();
            calcular('/');
        }
        if (acao.getSource() == igual) {
            igual();
        }
    }

    private void calcular(char c) {
        if (!tfVisor.getText().equals("")) {
            operacao = c;
            segundo = false;
            utd = false;
            n1 = Double.parseDouble(tfVisor.getText());
        } else {
            return;
        }
    }

    private void numDigi(String n) {
        if (segundo == true) {
            tfVisor.setText(tfVisor.getText() + n);
        } else {
            tfVisor.setText("");
            tfVisor.setText(tfVisor.getText() + n);
            segundo = true;
        }
    }

    private void igual() {
        if (operacao == '+') {
            n2 = n1 + Double.parseDouble(tfVisor.getText());
            tfVisor.setText("" + n2);
            n1 = 0;
            n2 = 0;
            operacao = ' ';
            segundo = false;
        } else if (operacao == '-') {
            n2 = n1 - Double.parseDouble(tfVisor.getText());
            tfVisor.setText("" + n2);
            n1 = 0;
            n2 = 0;
            operacao = ' ';
        } else if (operacao == '*') {
            n2 = n1 * Double.parseDouble(tfVisor.getText());
            tfVisor.setText("" + n2);
            n1 = 0;
            n2 = 0;
            operacao = ' ';
        } else if (operacao == '/') {
            n2 = n1 / Double.parseDouble(tfVisor.getText());
            tfVisor.setText("" + n2);
            n1 = 0;
            n2 = 0;
            operacao = ' ';
        } else {
            return;
        }
    }

    private void decimal() {
        if (utd == false) {
            if (tfVisor.getText().length() < 1) {
                numDigi("0.");
            }
            else if (possuePonto() == true){
                    return;
                }
                else{
                numDigi(".");
                }
            }
            utd = true;
        
    }

    private boolean possuePonto(){
        String v = tfVisor.getText();
        boolean b = false;
        for (int i = 0; i<v.length();i++){
            if (v.substring(i, i).equals(".")){
                b = true;
            }
            else {
                b = false;
            }
        }
        return b;
    }
}
F

Iae galera…
Obrigado pelas respostas…

Além dos erros de escrita… tinha as virgulas que eu substitui por “;”…
No livro estavam virgulas mesmo…

Obrigado a atenção… forum mto bom…

vou aprender mto aqui…

vlw

Criado 21 de março de 2012
Ultima resposta 22 de mar. de 2012
Respostas 9
Participantes 8