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

1 resposta
ZeTripe

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

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

1 Resposta

ViniGodoy


Criado 27 de junho de 2012
Ultima resposta 28 de jun. de 2012
Respostas 1
Participantes 2