O erro de “missing return statement” ocorre porque existe um caso em que esse método não retorne nada (nem null): quando alunos.size() é igual a zero, pois o laço não executa nenhuma vez.
Você precisa adicionar um return para isso. Algo como:
public Aluno localizarAluno(){
if (alunos.size() == 0){
return null;
}
for (int i = 0; i < alunos.size(); i++){
Aluno a = alunos.get(i);
if (a.getMatricula()==matricula){
return alunos.get(i);
} else return null;
}
}
Só que seu código tem um problema: se o primeiro aluno no array alunos não for o que está sendo procurado, o método já retorna (“else return null”), sem verificar os demais alunos. Você precisa verificar, mas não retornar null caso o aluno verificado não seja o correto. Apenas continue o loop:
public Aluno localizarAluno(){
if (alunos.size() == 0){
return null;
}
for (int i = 0; i < alunos.size(); i++){
Aluno a = alunos.get(i);
if (a.getMatricula()==matricula){
return alunos.get(i);
} // note que o else foi removido, o que faz o loop continuar
}
return null; // sem esse return, você obterá de novo o erro de missing return statement
}
Juntando tudo, você pode fazer algo como:
public Aluno localizarAluno(){
Aluno aluno = null;
for (int i = 0; i < alunos.size(); i++){
Aluno a = alunos.get(i);
if (a.getMatricula()==matricula){
aluno = alunos.get(i);
break; // encerra o loop
}
}
return aluno; // retorna o aluno encontrado, ou null caso alunos.size() seja zero ou o aluno não tenha sido encontrado
}
PS: torne a variável matricula um parâmetro do método.
Abraço.