[quote=Mantu]Por que quando vc coloca dentro do if “aparece simplesmente que o metodo deve retornar um objeto do tipo Conta”? Porque o compilador é um “cara cauteloso”, pessimista até, que pensa (ou tenta) em todas as possibilidades possíveis de nosso programa fazer caca…
O compilador te fala isso porque provavelmente naquele trecho que vc escreveu
//codigo qualquer
não deve ter uma instrução return.
Por que isso? Porque se um método retorna Conta, por exemplo, o compilador não vai compilar enquanto houver alguma possibilidade de o método terminar e não retornar nada, ou seja, não executar uma instrução return /*algumaCoisa*/;
.
Perceba o seguinte: Vamos supor que o seu código seja esse para aquele método:
public Conta getConta(int x)
{
if(x < conta.length)
{
return conta[x];
}else
{
System.out.println("Nenhuma conta encontrada");
}
}
Nesse caso, vai dar aquele erro que está te apoquentando. Vejamos porque:
Se x for menor que o comprimento de conta, ele entra no if e retorn conta[x]. Mas se x for maior ou igual ao comprimento de conta o que aconteceria? O método iria entrar no else, jogar na tela um “Nenhuma conta encontrada”, sair do else e encerrar o processamen… OPA!!! Ele ia encerrar sem retornar nada!!! Isso o compilador não pode permitir, por que lá fora, tem alguém que chamou o getConta(int) e está esperando dele ou uma instância da classe Conta, ou um null. Por isso aquele erro que vc mencionou: Por que o compilador (ou pré-compilador, se vc tiver usando alguma IDE que te mostre os erros em tempo de digitação) não permite que um método, que diz retorna alguma, não retorne nada (ou seja, “retorne” void).
E isso continuaria acontecendo se vc tivesse um caso assim também:
public Conta getConta(int x)
{
if(x < conta.length)
{
return conta[x];
}else
{
int option = JOptionPane.showConfirmDialog(null, "Conta inexistente, deseja criá-la")
if(option == JOptionPane.YES_OPTION)
return new Conta(...);
else
System.out.println("Nenhuma conta encontrada");
}
}
Nesse caso, se o método entrar no segundo else, ele vai denovo terminar sem retornar nada. Então o compilador tá manda aquela mensagensinha simpático, informando que o método deve retornar um Conta.
Espero ter ajudado!
qq coisa, poste mais, ok!?[/quote]
Genial…é isso ae mesmo!! o compilador estava alertando para a burrada de talvez não retornar nada…OBRIGADO PELA LUZ!! foi muito útil a explicação!!agradeço!
agora o code já está rodando legal, taquei uma exception e tá rolando legal agora…obrigado a todos!
abraço ![:smiley: :smiley:](https://www.guj.com.br/images/emoji/twitter/smiley.png?v=9)