[Resolvido] Funções com retorno e sem

Olá programadores,

vendo um exemplo aqui e outro ali de várias funções notei que algumas aparecem return e outras não, pesquisando na net o pessoal fala que quando não retorna nada tem que usar o void mas quando retorna usa o return, ta certo então, mas onde está a diferença que eu não to enxergando? O que quer dizer quando retorna e quando não?

abraço

Você já viu Delphi (Pascal)?

Na facu estamos trabalhando com o VisualG

[quote=javahunter]Olá programadores,

vendo um exemplo aqui e outro ali de várias funções notei que algumas aparecem return e outras não, pesquisando na net o pessoal fala que quando não retorna nada tem que usar o void mas quando retorna usa o return, ta certo então, mas onde está a diferença que eu não to enxergando? O que quer dizer quando retorna e quando não?

abraço[/quote]

Vamos lá, com um exemplo acho que fica mais simples, veja o código abaixo:

public class Test {

	public static void main(String[] args) {
		exibeResultado();
	}

	private static void exibeResultado() {
		System.out.println("O valor da soma é:" + soma(1, 2));
	}

	private static int soma(int numero1, int numero2) {
		return numero1 + numero2;
	}

}

Método soma:

private static int soma(int numero1, int numero2) { return numero1 + numero2; }

O método soma irá retornar um resultado (poderia ser um objeto, ou seja, ele retornará algo para quem o chama), esse resultado irá para o método exibeResultado que utilizará o retorno do método soma para exibi-lo para o usuário.
Ou seja, alguém está chamando e precisa de um retorno (resposta) daquele que está sendo chamado, pois ele fará alguma coisa com essa resposta.

Já podemos ver que o método main chama o exibeResultado, porém o mesmo não retorna nada (void), isso porque o método exibeResultado já irá colocar na tela o resultado final

private static void exibeResultado() { System.out.println("O valor da soma é:" + soma(1, 2)); }

Temos “return” nos métodos que irão devolver alguma coisa.
Temos “void” naqueles métodos que exibirão resultado.

Caso não tenha ficado muito claro, leia:

http://www.devmedia.com.br/metodos/7348
e
http://www.dm.ufscar.br/~waldeck/curso/java/part24.html
e
http://nerdiandoemjava.blogspot.com.br/2011/03/metodos-em-java.html

Espero tê-lo ajudado.
8)

Mas o que exatamente tu não entendeu?
Vamos pensar em dois métodos simples, um apresenta uma mensagem no console e outro executa uma soma de dois parâmetros.

Mensagem:

public void printMessage(String message) { System.out.println("Message: " + message); }

Não tem o que retornar, é simplesmente imprimir uma mensagem. Agora vamos a um método que faz a soma, opa, se ele vai somar eu quero saber o resultado, quero que ele me retorne o valor dessa operação, portanto:

public Double sum(Double val1, Double val2) { return val1 + val2; }

Correto colega?

EX:

*Return
Qual é seu nome ?

  • Isso retorna algo. (-Meu nome é João)

*Sem return
Seu nome é João!

Cara,

Na verdade isso é bem simples.

Se você somente precisa que um método “faça algo” você usa uma função sem retorno.

Agora se você precisa de um método que" faça algo e te traga uma resposta"(pode ser o resultado de uma operação, uma confirmação de verdadeiro ou falso ou qualquer coisa do tipo), esse método precisa de um retorno.

Exemplos:


Class Teste
{

int c = 0; 

//função sem retorno
void soma1(int a, int b)
{
     c = a + b; // observe que este método soma os valores de a e b e atribui estes valores à variável c, nada mais.
}

//retorna um inteiro
int soma2(int c, int d)
{
    return = c + d;// este método soma os valores de entrada e retorna este resultado, possibilitando que você use o mesmo para o que precisar.
}

//retorna um boolean
boolean soma3(int e, int f)
{
    if(e+f < 10) // se soma das entradas menor que 10 retorna verdadeiro.
    {
        return true;
     }
     else
     {
        return false; // senão retorna falso.
     }
}
}

Assim veja abaixo o que você pode fazer, sabendo o que um método retorna.

Executando o método soma1 ele apenas executará o arquivo no corpo do método, ou seja :


    int c = soma1(2,3);//não compila pois não há um valor de retorno.

Já se você fizer o mesmo com o método soma2, veja:


 int c = soma2(2,3);// o valor de c passa a ser 5, pois o método "soma2" soma suas entradas(2 e 3) e ainda retorna esse resultado. 

Bem como:


 int c = 5 * soma2(2,3);// o valor de c passa a ser 25, pois o método "soma2" soma suas entradas(2 e 3) e multiplica por 5. 

Repare que esta atribuição(c = soma2) só funciona pois o método “soma2” retorna um inteiro(c+d == 2+3)


int c = soma3(2,3);// não compila pois não é possível atribuir um boolean a um inteiro ( c == soma3)

IMPORTANTE LEMBRAR

O return encerra o método

Como exemplo o método soma 3:

Se o valor for menor que 10 ele retorna na linha 25 e não passa pelas demais linhas no corpo do método.

Espero ter ajudado.

Obrigado pessoal, ajudou muito

entendi agora a diferença entre um e outro

vlw