Calculo Média_Alunos [Modo Gráfico]

Segue o código do programa que fiz para cálculo de notas.

[code]
/* Notas_Alunos
@author Raphael Santana Carvalho */

import javax.swing.JOptionPane; // classe JOptionPane

public class Notas_Alunos {

public static void main(String args[]) {
	JOptionPane.showMessageDialog(null, "Calcule a Média dos Alunos (Versão 0.2)! \n\n Criado por: Raphael S.Carvalho."); 
	String msg_erro = ("O programa foi encerrado.");

	int aluno = 0;
	try {
		while (aluno <= 0) {
			aluno = Integer.parseInt(JOptionPane.showInputDialog("Quantos alunos há na sala?")); 

			if (aluno <= 0) {
			JOptionPane.showMessageDialog(null, "São validos apenas valores maiores que [0]!"); 
			}
		} // fim do while.
	} 
	catch(NumberFormatException ex) {
            	JOptionPane.showMessageDialog(null, msg_erro, "Erro", JOptionPane.ERROR_MESSAGE);
                    System.exit(0);
	}

	double prova = 0;
	try {
		while (prova <= 0) {
			prova = Double.parseDouble(JOptionPane.showInputDialog("Favor informar a pontuação máxima \npara as notas dos alunos:")); 

			if (prova <= 0) {
				JOptionPane.showMessageDialog(null, "São validos apenas valores maiores que [0]!"); 
			}
		} // fim do while.
	} 
	catch(NumberFormatException ex) {
            	JOptionPane.showMessageDialog(null, msg_erro, "Erro", JOptionPane.ERROR_MESSAGE);
                    System.exit(0);
	}
	
	int id_aluno;
	double nota_aluno = 0;
	double menor_nota=prova, maior_nota=0;
	double media = 0;
	
            try {
                    while (nota_aluno <= 0 || nota_aluno > prova) { 

                            for (id_aluno=1; id_aluno <= aluno; id_aluno++) {
                                    String texto_aluno = JOptionPane.showInputDialog("Digite a nota do aluno "+id_aluno+":");

                                    nota_aluno = Double.parseDouble(texto_aluno);

                                    if (nota_aluno <= 0 nota_aluno > prova) {
                                            JOptionPane.showMessageDialog(null, "São validos apenas valores maiores que [0] e menor ou igual a ["+prova+"]!");
                                    }

                                    media += nota_aluno;

                                    if (nota_aluno > maior_nota) {
                                           maior_nota = nota_aluno;
                                    }

                                    if (nota_aluno < menor_nota) {
                                            menor_nota = nota_aluno;
                                    }
                            } // fim do for.
                    } // fim do while.
            }
	catch(NumberFormatException ex) {
            	JOptionPane.showMessageDialog(null, msg_erro, "Erro", JOptionPane.ERROR_MESSAGE);
                    System.exit(0);
	} 
	catch(NullPointerException ex) {
            	JOptionPane.showMessageDialog(null, msg_erro, "Erro", JOptionPane.ERROR_MESSAGE);
                    System.exit(0);
	} 

	media = media/aluno; // calcula a média com base nas notas dividido pelo número de alunos.
	JOptionPane.showMessageDialog(null, "A sala tem: "+aluno+" alunos. \n E a média dos alunos é: "+media+". \n\n A maior nota é: "+maior_nota+". \n A menor nota é: "+menor_nota+".");

} // fim do metódo.

} // fim do programa.[/code]

adiciona [resolvido no titulo]

eu não entendi pq o programa pede a pontuação maxima se ele verifica isso na execução…

e deveria haver uma saida melhor caso o campo fosse nulo… pois no primeiro teste eu joguei 40 alunos e no 13º apertei enter sem querer e tudo se perdeu… deveria vir um aviso pedindo uma nota valida…

ele pede a nota maxima para servir de base para a variavel menor_nota

depois farei mais prevenções de erros.

a base pra mnenor_nota pode ser a primeira nota…