Porque o java está informando um valor incorreto na divisão?

O intuido desse algoritmo é fazer a média de um aluno, e depois organizar em ordem alfabetica, mais mantendo o indice da nota
mais o java lança um resultado de divisão incorreto, fazendo o erro no sistema. me ajudem por favor

[code] public static void main(String[] args) {

	double somaDasNotas=0,auxSoma=0;
	int qntdAlunos = Integer.parseInt(JOptionPane.showInputDialog("Digite a  quantidade de alunos que irão receber média"));
	int qntdNotaTemAluno = Integer.parseInt(JOptionPane.showInputDialog("Digite quantas notas os alunos irão receber"));
	
	// vetores : armazenam nome e média od alunos
	String nomesAlunos [] =  new String [qntdAlunos];
	double mediaAluno [] = new double [qntdAlunos];
	double mediaAlunoCopia [] = new double [qntdAlunos];
	
	for (int i = 0; i < nomesAlunos.length; i++) {
		nomesAlunos[i] = JOptionPane.showInputDialog("Digite o nome do " + (i+1) + "º aluno");
		
		//Colocando todas a notas do aluno para que seja obtida a média
		for (int j = 1; j <= qntdNotaTemAluno; j++) {
			do{
				auxSoma = Double.parseDouble(JOptionPane.showInputDialog("Digite a " + j + "ª nota do aluno " + nomesAlunos[i]));
				if ((auxSoma<0)||(auxSoma>10)){
					JOptionPane.showMessageDialog(null, "Nota não poderá ser maior que 10 e nen menor que 0","Msg erro",
					JOptionPane.ERROR_MESSAGE,null);
					auxSoma = -1;
				}else{
					JOptionPane.showMessageDialog(null, "Nota confirmada");
					somaDasNotas += auxSoma;
					}
				}while(auxSoma == -1);							
		
		}//final for J

		mediaAluno[i] = (somaDasNotas/qntdNotaTemAlunos); 
		somaDasNotas = 0;					
		System.out.println(mediaAluno[i]);
	}// fina for I	
	
	
	int opcaoOrganizamento = Integer.parseInt(JOptionPane.showInputDialog("OPÇÕES DE ORGANIZAÇÃO BIMESTRAL \n1- orgazinar por ordem alfabética"
	+ "\n2- organizar por ordem númerica de notas(crecente)"));
	
	//concatenando o indice do vetor dentro do String de nome, para que cada aluno fique com sua nota pertencente, após a organização
	for (int i = 0; i < nomesAlunos.length; i++) {		
		nomesAlunos[i] += "" + i;		
	}
	
	Arrays.sort(nomesAlunos, 0 , nomesAlunos.length);
	int auxOrganizacao=0,numeroUltimo=0,j=0;
	String ultimo = "";
	

		
		//tirando  o indico que ficou no string, e absorvendo ele a uma variável para ser comparada

	for (int i = 0; i < mediaAlunoCopia.length; i++) {
		
		ultimo = nomesAlunos[i].substring(nomesAlunos[i].length()-1 , nomesAlunos[i].length());
		nomesAlunos[i] = nomesAlunos[i].substring(0,nomesAlunos[i].length()-1);
		numeroUltimo = Integer.parseInt(ultimo);				
		mediaAlunoCopia[i] = mediaAluno[numeroUltimo];
	
	}
			
		
	for (int i = 0; i < mediaAluno.length; i++) {
		System.out.println("nome: " + nomesAlunos[i] + " Média: " + mediaAlunoCopia[i]);
	}[/code]

[color=red] [/color]Gostaria de saber, porque nesse ponto o java, passa um resultado de divisão incorreto[size=18] [/size]

mediaAluno[i] = (somaDasNotas/qntdNotaTemAlunos);