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];
}
}
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;
}