Ajuda - Exercicio simples em Java

Bom dia a todos!

Galera, sou novato em Java mas estou gostando muito da linguagem.
Li e estudei já bastante sobre a linguagem mas a prática me confunde muito!

Então recorri ao Fórum da GUJ para ver se vocês podem me dar um empurrão em um exercicio aleatório que escolhi para fazer.

Seria mais ou menos o seguinte.

Uma classe Somar. valor1+valor2
Uma classe Subtração. valor1-valor2
Uma classe Multiplicação. valor1*valor2
Uma classe Divisão. valor1/valor2

E a classe principal Operação, que realizaria os calculos apartir de um if.

No caso usaria um if para como “Digite 1 para fazer uma soma\nDigite 2 para fazer uma subtração\nDigite 3 para fazer uma multiplicação\nDigite 4 para fazer uma divisão”

Será que fui claro?

Acredito que não deve ser tãooo simples assim, to quebrando a cabeça e até agora nada…

Obrigado desde já! :smiley:

Olá viniciusglanert, na realidade, o ideal é você utilizar uma classe chamada operacao e dentro dessa classe você criar os métodos somar, subtrair, multiplicar e dividir, e uma classe principal, com a funçao main, para efetuar essas operações.

Ex: Operacao.java

public class Operacao {
   public void somar(double v1, double v2){}
   public void subtrair(double v1, double v2){}
   public void dividr(double v1, double v2){}
   public void multiplicar(double v1, double v2){}
}

Ex. Principal.java


public class Principal{
   public static void main(String ...){
       //Aqui você cria sua instância de Operacao e chama os métodos
   }

Muito obrigado meu amigo!

Vou tentar fazer aqui no NetBeans e posto o resultado

Grato! (y’

Só corrigindo, o retorno dos métodos não deve ser void e sim, double, os métodos retornam o resultado da operacao, e na sua classe principal vc as imprime na tela.

To compreendendo melhor agora, mas ainda não estou conseguindo imprimir na tela atraves da classe principal…

Dá uma olhada no codigo

package calcular;


public class Operacao {
double resultado[];

public double somar (double valor1, double valor2){
resultado[0]=valor1+valor2;
return resultado[0]; }

public double subtrair (double valor1, double valor2){
resultado[1]=valor1-valor2;
return resultado[1]; }

public double multiplicar (double valor1, double valor2){
resultado[2]=valor1*valor2;
return resultado[2]; }

public double dividir (double valor1, double valor2){
resultado[3]=valor1/valor2;
return resultado[3]; }

}
package calcular;

import javax.swing.JOptionPane;


public class Calcular {

   
    public static void main(String[] args) {
        
    int opc;
    Operacao operacao=new Operacao();

   opc= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite uma opção:\n1- somar\n2- subtrair\n3- Multiplicar\n4- Dividir ","OPERAÇÃO",JOptionPane.PLAIN_MESSAGE));

   if(opc==1){
  operacao.resultado[0]=JOptionPane.showInputDialog(null,"O Resultado é"+resultado[0],"OPERAÇÃO",JOptionPane.PLAIN_MESSAGE));
     }

   if(opc==2){
     }


O erro está na linha 17, não consigo achar a sintaxe correta "/
   if(opc==3){
     }

   if(opc==4){
     }
    }

}

Oi Vinícius,

Primeiro vamos à classe Operacao.
Você não precisa do array que você está declarando e mesmo se precisasse, vc precisaria instanciá-lo primeiro, o que você não está fazendo.
Enfim, dê uma olhada abaixo:

[code]public class Operacao {

public double soma( double n1, double n2 ) {
    return n1+n2;
}

}[/code]

Escreva os outros 3 métodos e poste para a gente continuar :wink:

Olhe esse Tópico. Nele foi discutido justamente esse caso de Calculadora OO.

[]s

viniciusglanert,
seu codigo esta muito errado…
vc tera q revelo praticamente inteiro…

Opa, no fundo, bem no fundo eu já esperava ter que refazer todo código de novo hehehe
Mas fico muito agradecido, pois estou aqui para aprender ^^

Certo, está aqui então, refeito, os métodos da classe operação:

[code]package calcular;

public class Operacao {

public double somar (double valor1, double valor2){
return valor1+valor2; }

public double subtrair (double valor1, double valor2){
return valor1-valor2; }

public double multiplicar (double valor1, double valor2){
return valor1*valor2; }

public double dividir (double valor1, double valor2){
return valor1/valor2; }

}[/code]

Chegou a ver o tópico que mandei (3 posts atrás)? Assim como o autor daquele tópico, o código está um pouco procedural demais. Tente aplicar o conceito de polimorfismo já que java é OO.

[]s

[quote=viniciusglanert]Opa, no fundo, bem no fundo eu já esperava ter que refazer todo código de novo hehehe
Mas fico muito agradecido, pois estou aqui para aprender ^^

Certo, está aqui então, refeito, os métodos da classe operação:

[code]package calcular;

public class Operacao {

public double somar (double valor1, double valor2){
return valor1+valor2; }

public double subtrair (double valor1, double valor2){
return valor1-valor2; }

public double multiplicar (double valor1, double valor2){
return valor1*valor2; }

public double dividir (double valor1, double valor2){
return valor1/valor2; }

}[/code][/quote]

cmo certeza…esse é o objetivo aqui…
nos ajudar…

e como ficou sua classe main?

Não consegui modificar a Main "/

Como tinha dito, apartir de lá, não sei como puxar o método pra ser impresso…

Vou te dr as dicas…

dentro da classe main…vc ira instanciar um objejo da classe Operacao

Operacao op = new Operacao()

depois para fazer os calculos vc chama os metodos passando os parametros necessarios

double resultado = op.somar(valor1, valor2);

agora é so exibir o resultado…

qlq duvida posta ai…

Att.,

Certo Lucas, agradeço muito a paciencia!

Ta dando erro na classe Main

[code]package calcular;

import javax.swing.JOptionPane;

public class Calcular {

public static void main(String[] args) {
    
int opc;

Operacao operacao=new Operacao();

opc= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite uma opção:\n1- somar\n2- subtrair\n3- Multiplicar\n4- Dividir ",“OPERAÇÃO”,JOptionPane.PLAIN_MESSAGE));

if(opc==1){
double resultado= operacao.somar(valor1,valor2); //Erro aqui <- Cannot find Symbol

// operacao=JOptionPane.showInputDialog(null,“O Resultado é”+somar"OPERAÇÃO",JOptionPane.PLAIN_MESSAGE));
}

if(opc==2){
}

if(opc==3){
}

if(opc==4){
}
}

}[/code]

a sua classe nao conhece a variavel valor1 e valor2.

eu coloquei no exemplo…valor1 e valor2
mais na sua classe main ou vc deve ter:

exemplo:

int valor1 = 5;
int valor2 = 6;

op.soma(valor1, valor2) //passa as variaveis como parametro

 

Vejam o sétimo post desse tópico aqui. Nele eu coloquei o passo a passo de uma calculadora OO com polimorfismo.

Booa meu amigo!

Agradeço a todos consegui finalizar o programa!
Não se está da melhor maneira possivel mas está funcionando, fiquei muito contente hehe

Vou mandar pra vocês, analizem e aceito dicas e criticas õ/

[code]
package calcular;

import javax.swing.JOptionPane;

public class Calcular {

public static void main(String[] args) {

int opc;

Operacao operacao=new Operacao();

opc= Integer.parseInt(JOptionPane.showInputDialog(null,"Digite uma opção:\n1- somar\n2- subtrair\n3- Multiplicar\n4- Dividir ",“OPERAÇÃO”,JOptionPane.PLAIN_MESSAGE));

if(opc==1){
double valor1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro valor: "));
double valor2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo valor: "));
double resultado= operacao.somar(valor1,valor2);
JOptionPane.showMessageDialog(null,"A soma é igual a: "+resultado,“RESULTADO SOMA”,JOptionPane.PLAIN_MESSAGE);
}

if(opc==2){
double valor1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro valor: "));
double valor2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo valor: "));
double resultado= operacao.subtrair(valor1,valor2);
JOptionPane.showMessageDialog(null,"A subtração é igual a: "+resultado,“RESULTADO SUBTRAÇÃO”,JOptionPane.PLAIN_MESSAGE);
}

if(opc==3){
double valor1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro valor: "));
double valor2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo valor: "));
double resultado= operacao.multiplicar(valor1,valor2);
JOptionPane.showMessageDialog(null,"A multiplicação é igual a: "+resultado,“RESULTADO MULTIPLICAÇÃO”,JOptionPane.PLAIN_MESSAGE);
}

if(opc==4){
double valor1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro valor: "));
double valor2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo valor: "));
double resultado= operacao.dividir(valor1,valor2);
JOptionPane.showMessageDialog(null,"A divisão é igual a: "+resultado,“RESULTADO DIVISÃO”,JOptionPane.PLAIN_MESSAGE);
}
}

}[/code]

[code]
package calcular;

public class Operacao {

public double somar (double valor1, double valor2){
return valor1+valor2; }

public double subtrair (double valor1, double valor2){
return valor1-valor2; }

public double multiplicar (double valor1, double valor2){
return valor1*valor2; }

public double dividir (double valor1, double valor2){
return valor1/valor2; }

}[/code]

Obrigado pela paciência!

(Próxima missão - interface gráfica para a calculadora hehe)

é por ai msm…

so acho q ao invers de usar if vc poderia usar o switch…

modifica seu codigo …vc ja vai aprender + alguma coisa…

Att.,

Já reparaste que dentro dos ifs tens sempre as mesmas duas linhas? Talvez isso seja sinal que elas poderiam estar antes dos ifs e não dentro…

bem notado…passei despercebi por isto…

Att.,