Erro ao retorna resposta para o mai()

2 respostas
A
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 <strong>Exception in thread main java.lang.ArrayIndexOutOfBoundsException: 5</strong>

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(<a href="http://System.in">System.in</a>);

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

2 Respostas

Kau.Splett

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

Endenti!! muito obrigado pela ajuda

Criado 16 de maio de 2018
Ultima resposta 18 de mai. de 2018
Respostas 2
Participantes 2