Estoucomdificuldadedearrumaocodigoquedevemandaroresultadoparaomain(),eledevemandaasnotasacimadamediaparaomain()elecoplicanormalmaisdepoisquedigitoasnotaeledaesseerro<strong>Exceptioninthread“main”java.lang.ArrayIndexOutOfBoundsException:5</strong>sealguempodermedarumadicadecomoarrumaesseerroficogratoesteéocodigo:importjava.util.Scanner;publicclassquestao7{publicstaticvoidmain(Stringargs[]){floatvet[]=newfloat[5];inti;floatmedia,cond;floatnota;Scannere=newScanner(<ahref="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);}staticfloatresultado(floatvet[]){floatsoma=0,media=0;inti;for(i=0;i<5;i++)soma=soma+vet[i];media=soma/5;returnmedia;}staticfloatresultado1(floatvet[],floatmedia){inti;for(i=0;i<5;i++)if(vet[i]>=media)System.out.println("");returnvet[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.
publicstaticvoidmain(Stringargs[]){floatvet[]=newfloat[5];/* Criar vetor para armazenar notas acima da média */floatnotasAcima[]=newfloat[5];inti;floatmedia;Scannere=newScanner(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(intj=0;j<notasAcima.length;j++){System.out.println(notasAcima[j]);}}staticfloatresultado(floatvet[]){floatsoma=0,media=0;inti;for(i=0;i<5;i++)soma=soma+vet[i];media=soma/5;returnmedia;}/* Alteração do método para retornar um Array contendo as notas maiores ou iguais a média*/staticfloat[]resultado1(floatvet[],floatmedia){inti;intindexPreenchido=0;float[]notasAcima=newfloat[5];for(i=0;i<5;i++)if(vet[i]>=media){notasAcima[indexPreenchido++]=vet[i];}returnnotasAcima;}