Olá pessoal eu sou novo aqui no forúm e estou com uma dúvida de ordenação de número…
comecei a aprender java faze menos de 2 meses então eu nao sei praticamente nada…
então o programa que eu preciso fazer… é pegar uma turma de alunos e insirir o nome e a média dos alunos e depois disso o programa tem que imprimir os alunos que tiveram a maior e a menor média, sendo que 1 ou mais alunos podem ter tirado a nota máximo e/ou mínima…
eu consegui criar o programa e o código está aqui:
import java.util.Scanner;
public class Extra10_04 {
/**
*
*/
public static void main(String[] args) {
Scanner s = new Scanner (System.in);// Scanner para números
Scanner sNome = new Scanner (System.in);// Scanner para nomes
System.out.print ("Digite o número de alunos: ");
int n = s.nextInt();// número de alunos
String []vNomes = new String [n];
double []vMedias = new double [n];
double []vMaioresMedias = new double [n];
String []vNomesMaioresMedias = new String [n];
double [] vMenoresMedias = new double [n];
String []vNomesMenoresMedias = new String [n];
int contMaioresMedias = 0;// contador de quantos alunos tiveram as maior media
int contMenoresMedias = 0;//contador de quantos alunos tiveram a menor media
for(int i=0; i<n;i++){
System.out.print ("Digite o nome do aluno ["+(i+1)+"]: ");
vNomes[i] = sNome.nextLine();
System.out.print ("Digite a nota do aluno "+vNomes[i]+": ");
vMedias[i] = s.nextDouble();
}//for
//Ordenação
for(int i = 0;i<n-1;i++){
int min = i;
//calcular o mínimo
for(int j = i+1;j<n;j++){
if(vMedias[j]<=vMedias[i]){
min = j;
}
}
//trocar vMedias[min] com vMedias[i]
double aux = vMedias[min];
String auxNome = vNomes [min];
vMedias[min] = vMedias[i];
vNomes[min] = vNomes [i];
vMedias[i]= aux;
vNomes[i] = auxNome;
}
//organização dos vetores vMaioresMedias, vMenoresMedias, vNomesMaioresMedias e vNomesMenoresMedias.
for(int i=0;i<=n;i++){
vMenoresMedias[i] = vMedias[i];
vNomesMenoresMedias[i] = vNomes [i];
vMaioresMedias[i] = vMedias[n];
vNomesMaioresMedias[i] = vNomes[n];
if(vMedias[i+1]<= vMedias[i]){
vMenoresMedias[i+1] = vMedias[i+1];
vNomesMenoresMedias [i+1] = vNomes[i+1];
contMenoresMedias++;
}
if(vMedias[n-1]>= vMedias[n]){
vMaioresMedias[i+1] = vMedias[n-1];
vNomesMaioresMedias [i] = vNomes[n-1];
contMaioresMedias++;
}
}
for(int i = 0;i<=contMenoresMedias;i++){
System.out.println(vNomesMenoresMedias[i]+" obteve a menor média de: "+vMenoresMedias[i]);
}
for(int i = 0; i<=contMaioresMedias;i++){
System.out.println(vNomesMaioresMedias[i]+" obteve a maior média de: "+vMaioresMedias[i]);
}
}//main
}//class
só que na hora de rodar o programa o eclipse apresenta o seguinte erro
Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 3
at Extra10_04.main(Extra10_04.java:47)
alguém poderia me ajudar?
grato 
