Busca de objetos em array

Olá pessoal,

tenho uma classe que tem o seguinte método:

public void exibeExtrato(){ System.out.print("As notas do aluno(a) " + super.getNome() + " são: \n"); for(int i = 0; i<5; i++) System.out.print(notas[i]+" "); System.out.println("\nA média do aluno(a) " + super.getNome() + " é: " + getMedia()); System.out.println("------------------------------------------------"); }

em outra classe quero um método de busca, este deve varrer o array e encontrar o aluno com nome igual ao passado como parâmetro, e retornar todos os dados deste.
fiz o seguinte:

[code]public Aluno buscaAluno(String a){
Aluno retorno = null;
for (int i = 0; i <todos.length; i++){
if (todos[i].getNome().equals(a)){
retorno = todos[i].exibeExtrato();
break;
}
}

   return retorno;

}[/code]

Mas tá dando erro, alguém sabe o que pode ser?

abraço!

Duas coisas: Stacktrace completa e mais código ( como está declarada a array todos ).

Até!

É o seguinte o seu método exibeExtrato() não retorna nada (void), então você não pode atribulo a um return como vc faz aqui

# if (todos[i].getNome().equals(a)){ 
#                  retorno = todos[i].exibeExtrato(); 
#                  break; 

é só executa-lo que ele já escrever no prompt ou no terminal dependendo do sistema.
da seguinte forma

# if (todos[i].getNome().equals(a)){ 
#                  todos[i].exibeExtrato(); 
#                  break; 

e vc vai precisar retirar o retorno aluno do método buscaAluno(String a)

outra opção é vc fazer o seguinte

# if (todos[i].getNome().equals(a)){ 
#                  retorno = todos[i];
#                  break; 

assim o método buscaAluno(String a) vai retornar o aluno como já diz a propria assinatura do método

e depois vai ser só chamar

buscaAluno(‘zezinho’).exibeExtrato();

Espero ter ajudado

flw
Heber
http://www.heberfa.com.br

Seria uma boa você dizer que erro está dando.

Outra coisa, se todos é uma lista, é mais fácil usar o for each. Você também pode usar o return para abandonar a função e não ter uma variável temporária.

public Aluno buscaAluno(String a){ for (Aluno aluno : todos) { if (aluno.getNome().equals(a)){ return aluno; } } return null; }

Problema resolvido! valeu aí pessoal!

[quote=natz]Seguinte, o erro que dá é esse mesmo, de que o método deveria ser void e tal.

mas por exemplo, colocando o que o ViniGodoy mostrou, compila certo só que não executa. não abre nada no terminal (usando o bluej).[/quote]

É que agora o método agora só busca aluno, não imprime nada. Depois de fazer a busca, você pega esse Aluno que ele retorna, e chama o método exibeExtrato.

Não esqueça de verificar se o aluno que ele retorna não está nulo, p/ assim chamar algum método dele (senão dá NullPointerException).