RESOLVIDO. Dúvida sobre retorno de valores

13 respostas
I

Boa tarde,

Fiz essa classe (deve ter coisa faltando com certeza) :

public class Resultado {	


public int raizDelta2;
int delta;
int a;
int b;


int raizDelta= (int) Math.sqrt(delta);

int pos = (-1*b + (raizDelta))/(2*a);
int neg = (-1*b - (raizDelta))/2*a;

}

E preciso retornar os valores positivo e negativo juntos, mas não estou conseguindo.
Alguém pode me ajudar?

13 Respostas

drsmachado

Bom, primeiramente, preciso manter meu posto de chato, logo, por que não usa a tag [code] para postar teu código?
Segundo, para retornar mais de um valor, você precisa agrupar os mesmos em algum tipo que suporte isso.
Já viu vetores? E coleções?
Se viu um destes, é meio caminho.

E sim, está faltando muita coisa na tua classe.

W
System.out.println(pos + ", " + neg);
I
drsmachado:
Bom, primeiramente, preciso manter meu posto de chato, logo, por que não usa a tag [code] para postar teu código? Segundo, para retornar mais de um valor, você precisa agrupar os mesmos em algum tipo que suporte isso. Já viu vetores? E coleções? Se viu um destes, é meio caminho.

E sim, está faltando muita coisa na tua classe.

Desculpa, sou nova no forum não sabia da tag code.
Não vi nem vetores e nem coleções. Estou começando agora, a pessoa que está me ensinando, me dá algumas "missões" sem muitas explicações e eu me viro pra fazer..
Se você puder me ajudar, ficaria muito agradecida..

S
iisalynch:
Boa tarde,

Fiz essa classe (deve ter coisa faltando com certeza) :

public class Resultado {


public int raizDelta2;
int delta;
int a;
int b;


int raizDelta= (int) Math.sqrt(delta);

int pos = (-1*b + (raizDelta))/(2*a);
int neg = (-1*b - (raizDelta))/2*a;
}

E preciso retornar os valores positivo e negativo juntos, mas não estou conseguindo.
Alguém pode me ajudar?

Boa tarde.

Em primeiro lugar sempre coloque seu codigo entre as tags Code (tem um botão logo abaixo do titulo do topico escrito code, clique uma vez, copie o seu código para DEPOIS da tag e após isso clique em code de novo para fechar sua tag).

Quanto a dúvida:

Aquele seu código está solto na sua classe. Você precisa coloca-lo dentro de um metodo.

Assim:

public doublemeuMetodo(assinatura do metodo) {
int raizDelta2;
int delta;
int a;
int b;


int raizDelta= (int) Math.sqrt(delta);

double pos = (-1*b + (raizDelta))/(2*a);
double neg = (-1*b - (raizDelta))/2*a;
}

Um metodo só pode retornar apenas UM único valor.

O máximo que você pode fazer é retornar um array de double (terá que retornar um double já que você está fazendo divisões). O que está em negrito eu mudei para double.

Edit: Parece que negrito não funciona dentro da tag code. Interessante mas enfim. A linha 11 e 12.

drsmachado
[quote=iisalynch][quote=drsmachado]Bom, primeiramente, preciso manter meu posto de chato, logo, por que não usa a tag
para postar teu código?
Segundo, para retornar mais de um valor, você precisa agrupar os mesmos em algum tipo que suporte isso.
 viu vetores? E coleções?
Se viu um destes, é meio caminho.

E sim, está faltando muita coisa na tua classe.[/quote]

Desculpa, sou nova no forum não sabia da tag code.
Não vi nem vetores e nem coleções. Estou começando agora, a pessoa que está me ensinando, me  algumas "missões" sem muitas explicações e eu me viro pra fazer..
Se você puder me ajudar, ficaria muito agradecida..[/quote]
Ok.
Vamos .
Primeiro, retornar tem dois sentidos.
O primeiro deles é escrever o resultado na tela, como o wesllhey sugeriu.
O segundo é o último passo na execução de um método.
Independente de qual seja, você vai precisar colocar parte do que fez em um método.
Como?

Assim:
[code]
public class Resultado {


public int raizDelta2;
int delta;
int a;
int b;

public void calculaResultado(){
    int raizDelta= (int) Math.sqrt(delta);

    int pos = (-1*b + (raizDelta))/(2*a);
    int neg = (-1*b - (raizDelta))/2*a;
    //Aqui você insere o que o wesllhey sugeriu
}
}
I
Sem_Nome:
iisalynch:
Boa tarde,

Fiz essa classe (deve ter coisa faltando com certeza) :

public class Resultado {


public int raizDelta2;
int delta;
int a;
int b;


int raizDelta= (int) Math.sqrt(delta);

int pos = (-1*b + (raizDelta))/(2*a);
int neg = (-1*b - (raizDelta))/2*a;
}

E preciso retornar os valores positivo e negativo juntos, mas não estou conseguindo.
Alguém pode me ajudar?

Boa tarde.

Em primeiro lugar sempre coloque seu codigo entre as tags Code (tem um botão logo abaixo do titulo do topico escrito code, clique uma vez, copie o seu código para DEPOIS da tag e após isso clique em code de novo para fechar sua tag).

Quanto a dúvida:

Aquele seu código está solto na sua classe. Você precisa coloca-lo dentro de um metodo.

Assim:

public doublemeuMetodo(assinatura do metodo) {
int raizDelta2;
int delta;
int a;
int b;


int raizDelta= (int) Math.sqrt(delta);

[b]double pos = (-1*b + (raizDelta))/(2*a);
double neg = (-1*b - (raizDelta))/2*a;[/b]
}

Um metodo só pode retornar apenas UM único valor.

O máximo que você pode fazer é retornar um array de double (terá que retornar um double já que você está fazendo divisões). O que está em negrito eu mudei para double.

Na verdade eu já tenho um método, eu tenho uma classe chamada "matematica" onde está meu método e etc, e tenho essa outra classe que eu mandei o código chamada resultado, por isso não declarei um método pois eu já tenho ele..

drsmachado

Mesmo assim, você vai precisar de um método nesta classe.
Caso contrário, não conseguirá fazer muito, visto que os atributos não estão estáticos.

S

Deixa eu ver se eu entendi: você já tem esse metodo e você está apenas tentando chama-lo? Se for isso:

Matematica m = new Matematica();
m.nomeDoSeuMetodo(parametros);

Se você quer que ele retorne 2 valores, precisara usar Array ou Collection.

Exemplo de Array:

double valores[] = new double[1]; //array de 2 posições, que vai de 0 a 1
valores[0] = 20; //atribui um valor para a posição 0
valores[1] = 50; //atribui um valor para a posição 1
System.out.println(valores[0]); //pegando o valor da posição 0, aqui vai imprimir 20
System.out.println(valores[1]); //pegando o valor da posição 1, aqui vai imprimir 50
I

drsmachado:
Mesmo assim, você vai precisar de um método nesta classe.
Caso contrário, não conseguirá fazer muito, visto que os atributos não estão estáticos.

Criei um método e consegui!
Muito obrigada pela ajuda!

Matheus_Paiva

Sanada a sua duvida ?
se sim … coloca resolvido la no seu primeiro post …

E

Uma coisa de que sinto falta no Java é uma forma simples, já presente na linguagem, de retornar 2 valores. Eu gostaria de poder fazer algo assim (atenção, o código abaixo não é Java, é um “pseudo-Java”) :

public static pair<double, double> equacaoSegundoGrau (double a, double b, double c) {
    double x1 = ...;
    double x2 = ...;
    return (x1, x2);
}
...
double x1, x2;
(x1, x2) = equacaoSegundoGrau (1, 4, 4);

Em vez disso, você precisa fazer o seguinte:

public static double[] equacaoSegundoGrau (double a, double b, double c) {
    double[] ret = new double[2];
    double x1 = ...;
    double x2 = ...;
    ret[0] = x1;
    ret[1] = x2;
    return ret;
}
...
double x1, x2;
double[] ret = equacaoSegundoGrau (1, 4, 4);
x1 = ret[0];
x2 = ret[1];
drsmachado

entanglement:
Uma coisa de que sinto falta no Java é uma forma simples, já presente na linguagem, de retornar 2 valores. Eu gostaria de poder fazer algo assim (atenção, o código abaixo não é Java, é um “pseudo-Java”) :

public static pair<double, double> equacaoSegundoGrau (double a, double b, double c) {
    double x1 = ...;
    double x2 = ...;
    return (x1, x2);
}
...
double x1, x2;
(x1, x2) = equacaoSegundoGrau (1, 4, 4);

Em vez disso, você precisa fazer o seguinte:

public static double[] equacaoSegundoGrau (double a, double b, double c) { double[] ret = new double[2]; double x1 = ...; double x2 = ...; ret[0] = x1; ret[1] = x2; return ret; } ... double x1, x2; double[] ret = equacaoSegundoGrau (1, 4, 4); x1 = ret[0]; x2 = ret[1];


É, também sinto.
Acho uma coisa muito estúpida ter que criar classe e um objeto só para estas situações.

P.S.: Este foi meu comentário n° 5000.

E

Em C++ há um jeito de criar pares de números, sem criar uma classe separada, só que é um bocadinho desajeitado.

std::pair<double, double> equacaoSegundoGrau (double a, double b, double c) {  
    double x1 = ...;  
    double x2 = ...;  
    return std::make_pair<double,double>(x1, x2); 
}
...
double x1, x2;  
std::pair<double,double> d = equacaoSegundoGrau (1, 4, 4);  
x1= d.first; x2 = d.second;

Obviamente isso é desajeitado, tanto é que normalmente o pessoal de C++ costuma escrever assim:

void equacaoSegundoGrau (double a, double b, double c, double& x1, double& x2) {  
    x1 = ...;  
    x2 = ...;  
}
...
double x1, x2;  
equacaoSegundoGrau (1, 4, 4, x1, x2);
Criado 7 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 13
Participantes 6