Operações aritméticas com métodos

Alguém poderia me ajudar a resolver este probleminha. Já estou entendo alguns conceitos, mas nesse caso fiquei meio enroscado porque o programa tem que retornar o resultado das quatro operações. Como vou inserir quatro variável em return?

Crie uma aplicação em java com um método que implemente as 4 operações aritméticas passadas por parâmetro e aplique em 2 números e retorne o resultado.

Obrigado pela atenção!

Poderia encapsular em uma classe.
Mas o exercicio não pede para fazer os 4 métodos separados ?

Cara pelo que entendi voce vai passar que operacao voce que tipo

1 soma
2 subtracao
3 multiplicacao
4 divisao

depois usando if voce decide que operação aplicar e aplica e torna o valor resultante…

Pense como você chamaria esse método: Digamos que você o chamasse assim:

System.out.println (SuaClasse.metodo (45, '+', 69));
System.out.println (SuaClasse.metodo (45, '-', 69));
System.out.println (SuaClasse.metodo (45, '*', 69));
System.out.println (SuaClasse.metodo (45, '/', 69));

E ele imprimisse mais ou menos isso:

114
-24
3105
0.6521739130434782608695652173913

Como é que o método deveria ser declarado?

[code]import java.util.*;

public class N2 {

public static double operar(double a, double b) {
	
double soma = a + b;
double sub = a - b;
double mult = a * b;
double divi = a / b;

// Implementar as operações e retorna. Só que no retorno 
// tem que apresentar o resultado de todas as operações.

return (soma sub); 
}
public static void main(String[] args) {

	Scanner num = new Scanner(System.in);
	
	System.out.print("Digite dois números.");
	
	double n1 = num.nextDouble();
	double n2 = num.nextDouble();
					
	System.out.println(operar(n1,n2));

}

}
[/code]

A questão pede um método com retorno. O retorno tem que apresentar o resultado das quatros operações.

Assim não pode, assim é usando void, irmão.

[quote]System.out.println (SuaClasse.metodo (45, ‘+’, 69));
System.out.println (SuaClasse.metodo (45, ‘-’, 69));
System.out.println (SuaClasse.metodo (45, ‘*’, 69));
System.out.println (SuaClasse.metodo (45, ‘/’, 69));

[code]

Eu não postei a solução para o seu problema.
Eu postei um exemplo do uso do seu método com diferentes operações e argumentos.
Um método em Java só pode retornar um valor, portanto para você poder trabalhar com as 4 operações, terá de chamar o método 4 vezes.

A solução tem que ser dentro dessa lógica, porque é assim que o conceito de método esta sendo abordado no meu curso:

[quote=paulomoreira1981][code]import java.util.*;

public class N2 {

public static double operar(double a, double b) {
	
double soma = a + b;
double sub = a - b;
double mult = a * b;
double divi = a / b;

// Implementar as operações e retorna. Só que no retorno 
// tem que apresentar o resultado de todas as operações.

return (soma sub); 
}
public static void main(String[] args) {

	Scanner num = new Scanner(System.in);
	
	System.out.print("Digite dois números.");
	
	double n1 = num.nextDouble();
	double n2 = num.nextDouble();
					
	System.out.println(operar(n1,n2));

}

}
[/code][/quote]

Você está tendo um pequeno problema com interpretação de texto.
O texto é este:

E minha interpretação é esta:
Crie uma aplicação em Java - é o que você está tentando fazer…
Um método que implemente as 4 operações aritméticas passadas por parâmetro - ou seja, um dos parâmetros é a operação aritmética que deve ser executada, e os outros 2 parâmetros são os números em que a operação deve ser executada…
E retorne o resultado - o método retorna apenas um resultado, não 4. Para você ter os 4 resultados possíveis, terá de chamar o método 4 vezes, uma para cada operação diferente a ser executada.

Como em Java (diferentemente de Lisp ou Scala) você não pode passar um operador como parâmetro, você terá de usar uma outra alternativa. Uma delas é passar um caracter que é o operador desejado (como ‘+’, ‘-’, ‘*’ ou ‘/’).
Outra delas é fazer como lhe sugeriram e estabelecer que soma = 1, subtração = 2, etc. (você pode usar constantes, em vez de usar esses números horríveis).

Existem linguagens (como Lisp) onde um método pode retornar 4 resultados distintos em uma “tupla”; mas Java não é Lisp. Você pode retornar apenas um resultado de cada vez, ou então criar um array, contendo esses resultados, e retornar esse array. OK?

Irmão, mto obrigado pela atenção(na verdade foi uma aula :), vou tentar seguir sua orientação e postar o resultado.
Caso eu tenha novamente interpretado errado, por favor me corrija.

Fica com Deus, irmão.

Por favor, ao postar tópicos, não deixe TODAS AS LETRAS DO TÍTULO MAIÚSCULAS. Além disso, procure ler as regras do fórum:

CONFESSO QUE NÃO CONSEGUI FAZER!

ESTOU COMEÇANDO RAPAZIADA.

ViniGodoy

Por favor me dá uma luz nesse problema!

Obrigado.

[quote=paulomoreira1981]ViniGodoy

Por favor me dá uma luz nesse problema!

Obrigado.[/quote]

A dica que eu te dou é usar o equipamento que você tem entre as orelhas.
Revise a matéria e escreva seu programa. Ninguém vai fazer isso por você.

E explicações detalhadas você já teve.

PS: Você não pode retornar uma String com todos os resultados concatenados?

return String.sprintf("O resultado foi soma: %.2f, subtração: %.2f.%n", soma, sub);

:idea:

[quote=entanglement]Como em Java (diferentemente de Lisp ou Scala) você não pode passar um operador como parâmetro, (…)
[/quote]

Tecnicamente vc pode.


public enum Operador {

    public abstract int operate(int a, int b);

    SUM (){

         public int operate(int a, int b){
                return a + b;
         }
    }

   SUBTRACT(){

         public int operate(int a, int b){
                return a - b;
         }
    }


}

public int function (Operador op , int a , int b ){
              return op.operate(a,b);
}


System.out.println(function(Operador.SUM, 1, 2); // == 3

Operadores são objetos que implementam o padrão Functor ( Function Object). E objetos o java sempre teve :slight_smile:
O que o java não tem ainda (estamos na versão 7) é lambdas, que é uma forma sintaticamente mais simples de escrever functors. Mas lambdas não são closures (o scala e o groovy têm closures, não apenas lambdas) o que significa que o java 8 não vai mudar muito o que vc pode fazer, vai mudar o como vc pdoe fazer.

[quote=sergiotaborda][quote=entanglement]Como em Java (diferentemente de Lisp ou Scala) você não pode passar um operador como parâmetro, (…)
[/quote]

Tecnicamente vc pode.

[/quote]

Taborda-sensei, o cara mal e mal sabe o que é um switch, e estou tendo dificuldade de meter na cabeça dele a interpretação correta do problema. Não dê mais um nó na cabeça dele :slight_smile:

De qualquer forma, vou dar mais uma colher de chá para o Paulo. Vou postar qual é o cabeçalho do método, e quero ver se ele consegue preencher as lacunas.

/**
 * Efetua uma operação binária e retorna o resultado dessa operação. 
 * @param x O primeiro operando
 * @param y O segundo operando
 * @param op O operador: valores válidos: '+' para adição, '-' para subtração, '*' para multiplicação, '/' para divisão
 * @return se op == '+' , então x + y; se op == '-', então x - y; e assim por diante. 
 */
public static double operacao (double x, char op, double y) {
     /* complete com seu código aqui, por obséquio */
}

[quote=entanglement][quote=sergiotaborda][quote=entanglement]Como em Java (diferentemente de Lisp ou Scala) você não pode passar um operador como parâmetro, (…)
[/quote]

Tecnicamente vc pode.

[/quote]

Taborda-sensei, o cara mal e mal sabe o que é um switch, e estou tendo dificuldade de meter na cabeça dele a interpretação correta do problema. Não dê mais um nó na cabeça dele :slight_smile:

[/quote]

tudo muito certo com isso. eu confesso que não tenho paciencia para esse nível de educação a que vc se propôs e parabens por isso.
O ponto é apenas que durante a sua conversa vc fez uma afirmação universal que não é verdadeira e pode ser que alguém algum dia olhe isso e acredite.
Longe do meu propósito me intrometer na sua explicação e dos outros que estão tentando ajudar.

(Só como nota, e é apenas um comentário: Não é porque a pessoa não sabe o básico que o seu código tem que usar só primitivos. Isso não é OO e pode levar a pessoa a tentar isso depois , em outro cenário, o que seria contraprodutivo do ponto de vista do ensino. Por outro lado, eu não sou professor :slight_smile: não sei nada sobre didática.)