Prezados,
No intuito de realizar exercícios de fixação e aprimorar as habilidades em POO, me deparei com o seguinte exercício: Crie uma classe MediaAluno que contenha um atributo do tipo vetor de inteiros com o nome de notas. Essa classe deve ter um método para adicionar as notas nesse vetor (os valores que podem ser adicionados no vetor são os inteiros entre 0 e 100, caso contrário imprime uma mensagem de erro e não adiciona) e outro método que calcule a média de um aluno e imprima essa média. Os valores de entrada e saída deverão usar JOptionPane do javax.
Comecei criando 2 classes sendo uma delas a main:
package br.com.logica.programa.MediaAluno;
public class MediaAluno {
/**
* Essa classe é para testar lógica de programação pelo caderno de exercício
* "Exercícios JAVA" QUESTÃO 6:
* Crie uma classe MediaAluno que contenha um
* atributo do tipo vetor de inteiros com o nome de notas. Essa classe deve
* ter um método para adicionar as notas nesse vetor (os valores que podem
* ser adicionados no vetor são os inteiros entre 0 e 100, caso contrário
* imprime uma mensagem de erro e não adiciona) e outro método que calcule a
* média de um aluno e imprima essa média.
*/
private int QTD = 0;
private int notas;
public void setQTD(int qTD) {
QTD = qTD;
}
public int getQTD() {
return QTD;
}
public int getNotas() {
return notas;
}
public void setNotas(int notas) {
this.notas = notas;
}
}
E a classe main:
package br.com.logica.programa.testeMediaAluno;
import javax.swing.JOptionPane;
import br.com.logica.programa.MediaAluno.MediaAluno;
public class testeMediaAluno {
public static void main(String[] args) throws Exception{
/**
* Essa classe é para testar lógica de programação pelo caderno de exercício
* "Exercícios JAVA" QUESTÃO 6:
* Crie uma classe MediaAluno que contenha um
* atributo do tipo vetor de inteiros com o nome de notas. Essa classe deve
* ter um método para adicionar as notas nesse vetor (os valores que podem
* ser adicionados no vetor são os inteiros entre 0 e 100, caso contrário
* imprime uma mensagem de erro e não adiciona) e outro método que calcule a
* média de um aluno e imprima essa média.
*/
MediaAluno ma = new MediaAluno();
int soma = 0;
JOptionPane.showMessageDialog(null,
"Esse programa imprime MÉDIA de notas de um aluno \n"
+ "pela quantidade informada",
"Programa comparador numérico", JOptionPane.NO_OPTION);
ma.setQTD(Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade de notas \n"
+ "que o aluno deve ter")));
if (ma.getQTD() > 100) {
JOptionPane.showMessageDialog(null, "número superior", "Mensagem de erro", JOptionPane.ERROR_MESSAGE);
return;
}
if (ma.getQTD() < 0) {
JOptionPane.showMessageDialog(null, "número não permitido", "Mensagem de erro",
JOptionPane.ERROR_MESSAGE);
return;
}
int quantidade = ma.getQTD();
MediaAluno nt[] = new MediaAluno[quantidade];
for (int i = 0; i < quantidade; i++){
nt[i].setNotas(Integer.parseInt(JOptionPane.showInputDialog("Digite as notas do aluno")));
if (nt.length > 10) {
JOptionPane.showMessageDialog(null, "número superior", "Mensagem de erro", JOptionPane.ERROR_MESSAGE);
return;
}
if (nt.length < 0) {
JOptionPane.showMessageDialog(null, "número não permitido", "Mensagem de erro",
JOptionPane.ERROR_MESSAGE);
return;
}
soma+=nt[i].getNotas();
}
JOptionPane.showMessageDialog(null, "Média do Aluno é: \n" + soma / ma.getQTD());
}
}
O que acontece é que meu código recebe um "Exception in thread "main" java.lang.NullPointerException" nesse trecho "nt[i].setNotas(Integer.parseInt(JOptionPane.showInputDialog("Digite as notas do aluno")));", quando usuário digita a nota. A partir desse momento não consegui entender o que acontece uma vez que o sistema fica em timeout ou acessa o modo debug. O que eu devo fazer?