O eclipse acusa o código abaixo de que o método não possui retorno. O que eu estou fazendo de errado?
public Conta buscaPorNome(String nome) {
for (int i = 0; i < contas.size(); i++) {
if ( contas.get(i).nome.equals(nome) == true)
return contas.get(i);
}
}
OBS: é usado mais acima:
[code]List<Conta> contas = new ArrayList<Conta>();
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’.
public Conta buscaPorNome(String nome) {
for (int i = 0; i < contas.size(); i++) {
if ( contas.get(i).nome.equals(nome) == true)
return contas.get(i);
}
return null;
}
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();
}
// Acho melhor retornar uma instância vazia do que sofrer um NullPointerException lá na frente.
return new Conta();
[/quote]
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?
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
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. : )
public class teste12 {
public static void main(String[] args) {
Banco bc = new Banco();
Conta c1 = new ContaCorrente();
c1.deposita(10000);
c1.setNome(“Juca”);
c1.setNumero(1001);
bc.adiciona(c1);