Calculadora

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:

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.

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:

[quote=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.[/quote]

eu ja tentei isso.

mas no livro da deitel ta com virgula.

qndo coloco ponto e virgula da outros erros.

alguma sugestao?

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 

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.

[quote=fabiio2][quote=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.[/quote]

eu ja tentei isso.

mas no livro da deitel ta com virgula.

qndo coloco ponto e virgula da outros erros.

alguma sugestao?[/quote]

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

  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”.

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

[code]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;
}

}[/code]

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