Creio que vc nao ta retornando nenhum objeto valido para seu metodo.
Poste o codigo completo ou a exceção que esta sendo gerada.
DoomGuy
Pra falar a vdd, minah duvida real é: Pq ele não usa o “return contas.get(i)” que esta definido ao final do if.
mateuscs
Não sei parceiro pq não vi seu código.
Mas iremos por dedução.
Dizemos então que vc tem um vetor de Contas.
Voce quer fazer uma busca nesse vetor, e retornar um Objeto, ou nome.
Então
Você irá ter que retonar esse “TIPO” de objeto.
No seu caso, o IF retorna, e se for else, retorna o que?
Tera que ter um tipo de retorno nesse metodo ou ele nao irá funcionar entendeu.
R
renato.elric
Olá:
Bom você colocou um return dentro de um if. Caso o método não ache nenhum objeto, o que ele fará? Tem ter um return fora desse if caso ele não ache.
Espero te ajudado.
lucasportela
Foi como o amigo renato.elric falou, você tem que ter um retorno para o método, mas seu retorno está dentro de uma condição, se não atingir está condição, então seu método não possui retorno. Coloque um outro retorno no final do método ou então coloque o retorno em uma condição ‘else’ do seu ‘if’.
DoomGuy
Então gente, eu coloquei um else no final, com outro retorno. E ele ainda esta acusando o msm tipo de erro. Tem algo haver o for nessa história??
R
renato.elric
Tente o seguinte:
publicContabuscaPorNome(Stringnome){for(inti=0; i < contas.size(); i++) { if(contas.get(i).nome.equals(nome)==true)returncontas.get(i); }
returnnull;}
lucasportela
renato.elric,
acho melhor assim… retornal null é tenso
public Conta buscaPorNome(String nome) {
// Se existe elementos na coleção então verifico...
if(!contas.isEmpty()) {
for (Conta conta : contas) {
if ( conta.nome.equals(nome) == true) {
return conta;
}
}
}
// Acho melhor retornar uma instância vazia do que sofrer um NullPointerException lá na frente.
return new Conta();
}
R
renato.elric
É, fica mais bonito e não gera erro caso não trate.
Tudo dependerá de como você utilizará esse retorno.
Mas fica a dia: return dentro de condição tem q ter outro fora para garantir, se não o método será visto como void pelo compilador.
lucasportela
verdade, ele teria que validar com um if(conta == null) depois…ia dar na mesma.
pmlm
lucasportela:
// Acho melhor retornar uma instância vazia do que sofrer um NullPointerException lá na frente.
return new Conta();
Não deves fazer desta forma.
Se o teu método tem de devolver um objecto e não encontrou, devolve null (ou faz throw duma exception se deveria obrigatoriamente encontrar).
Imagina que depois queres saber se encontrou ou não o objecto. Ao devolver um new Conta() como saberias se era um objecto válido ou o teu objecto vazio?
ruben_m
O problema é Basico, ai existe o risco da classe nunca apanhar o retorno por causa do if…
tambem esse retorno tipo get(i) , é muito duvidoso… peço para postar todo codigo, talvez assim possamos ajudar pois acho que o problema aqui é mesmo Basico
DoomGuy
Esse problema é da apostila da Caelum FJ11, onde ele pege pra fazer desse modo e através do Maps. Olha, pelo Maps eu não demorei nem 10 minutos fazendo a lógica e escrevendo e funcionou. Por esse, mew, que trampo q ta dando. Mas enfim, vou postar os 2 códigos fontes: Um é onde esse método se aplica e no outro é a classe que a utiliza. Obrigado pela ajuda de todos.
OBS: O método que usa o Maps é o que deve ser substituído por esse que eu perguntei neste tópico. : )