Erro ao retorna resposta para o mai()

Estou com dificuldade de arruma o codigo que deve mandar o resultado para o main(), ele deve manda as notas acima da media para o main() ele coplica normal mais depois que digito as nota ele da esse erro Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 5
se alguem poder me dar uma dica de como arruma esse erro fico grato
este é o codigo:
import java.util.Scanner;
public class questao7{
public static void main(String args[]){
float vet[]= new float [5];
int i;
float media, cond;
float nota;
Scanner e =new Scanner(System.in);
for(i=0;i<5;i++){
System.out.println("Digite o valo das notas: " );
vet[i]=e.nextFloat();
}
media=resultado(vet);
cond = resultado1(vet,media);

           System.out.println(" media total: "+media);
          System.out.println("acima da media " +cond); 
           }
     static float resultado(float vet[]){
     float soma=0,media=0;
       int i;
         for(i=0;i<5;i++)
             soma = soma + vet[i];
             media = soma/5;
             return media;
       }
    static float resultado1 (float vet[] ,float media){
    int i;
    for(i=0;i<5;i++)
    if(vet[i]>=media)
     System.out.println(""); 
     return vet[i];
     }
   }

Olá, :slight_smile:

O erro java.lang.ArrayIndexOutOfBoundsException ocorre quando você tenta acessar uma posição não existente no Array. No método resultado1, ao realizar o retorno você faz “return vet[i]”, como a variável i foi incrementada e assumiu o valor 6 para não entrar na condição do for, seu código tenta retornar vet[6] mas a posição 6 não existe pois seu Array é um float[5].
Para resolver seu problema primeiro precisamos lembrar que pode ter mais de uma nota acima da média, então o método resultado1 deve retornar um array contendo somente as notas acima da média. Para isso alterei o valor de retorno no método, criei uma nova variável “notasAcima” para receber esse resultado e apresentei todas as notas acima da média.

public static void main(String args[]) {
	float vet[] = new float[5];
	/* Criar vetor para armazenar notas acima da média */
	float notasAcima[] = new float[5];
	int i;
	float media;
	Scanner e = new Scanner(System.in);
	for (i = 0; i < 5; i++) {
		System.out.println("Digite o valor das notas: ");
		vet[i] = e.nextFloat();
	}
	media = resultado(vet);

	/* Retornar notas acima da média */
	notasAcima = resultado1(vet, media);

	System.out.println("Média total: " + media);
	System.out.println("Acima da media: ");
	
	/* Apresentar notas acima da média */
	for (int j = 0; j < notasAcima.length; j++) {
		System.out.println(notasAcima[j]);
	}
}

static float resultado(float vet[]) {
	float soma = 0, media = 0;
	int i;
	for (i = 0; i < 5; i++)
		soma = soma + vet[i];
	media = soma / 5;
	return media;
}

/* Alteração do método para retornar um Array contendo as notas maiores ou iguais a média*/
static float[] resultado1(float vet[], float media) {
	int i;
	int indexPreenchido = 0;
	float[] notasAcima = new float[5];
	for (i = 0; i < 5; i++)
		if (vet[i] >= media) {
			notasAcima[indexPreenchido++] = vet[i]; 
		}
	return notasAcima;
}

Endenti!! muito obrigado pela ajuda

2 curtidas