Problemas com relação à arrays

6 respostas
pandorexona

Bom, galera, estou com problemas na seguinte questão:

1. Crie uma classe Aluno que armazena as propriedades NomeAluno e MediaAluno. Crie métodos get e set necessários.

2. Crie uma classe disciplina que armazena, no máximo, 200 média de alunos. Permita que o usário cadastre média de alunos.

3. Crie um programa principal que peça para o usuário digitar o nome dos alunos e suas médias. Essas médias devem ser armazenadas na classe disciplina. No final do programa, imprima todas as médias, e finalmente, imprima a média da turma.

Ok, beleza!
Aí vão os códigos das classes que eu fiz:

//1ª classe
class Aluno {
private String nomeAluno;
private double mediaAluno;

//métodos get e set para o nome do aluno
String getNomeAluno() {
return nomeAluno;
}

void setNomeAluno(String nomeAluno) {
this.nomeAluno = nomeAluno;
}

//métodos get e set para as médias
double getMediaAluno() {
return mediaAluno;
}

void setMediaAluno(double mediaAluno) {
this.mediaAluno = mediaAluno;
}

}
// 2ª classe
class Disciplina {

Aluno array[] = new Aluno[200];
int cont=0;

void cadastro(String nome, double nota){
array[cont].setNomeAluno(nome);
array[cont].setMediaAluno(nota);
cont++;

}

}
// 3ª classe
import java.util.Scanner;
class Main {
public static void main(String args[]){
//criando os objetos necessários
Scanner imput = new Scanner(System.in);
Disciplina ob = new Disciplina();

//criando as variáveis
double nota, cont_notas=0;
String nome;
int x, cont_alunos=0,i;

do{

System.out.println("-> Informe o nome do aluno: ");
nome = imput.nextLine();
System.out.println("-> Informe a nota: ");
nota = imput.nextDouble();

//cadastrando no vetor
ob.cadastro(nome, nota);
cont_notas+=nota;
cont_alunos++;

System.out.print("Deseja cadastrar outro aluno? (1 - Sim | 0 - Não)\n#_");
x = imput.nextInt();

System.out.println("1");
}while(x==1);

for(i=0;i<cont_alunos;i++){
System.out.printf("-> Aluno %d\n",i+1);
System.out.printf(" NOME: %s\n",ob.array[i].getNomeAluno());
System.out.printf(" NOTA: %.2f\n\n",ob.array[i].getMediaAluno());
}

System.out.printf("MEDIA DA TURMA: %.2f\n",cont_notas/cont_alunos);

}
}

Porém, estou tendo problemas na classe Disciplina, nesse método de cadastro.
O Netbeans, compilador que eu uso, dá erro de execução quando chamo esse método no main.

Sou programador em C e estou aprendendo Java este ano. Não sei se eu estou utlizando comandos que eu poderia usar em C e em Java não aceite.
Não faço ideia do erro que eu esteja cometendo.

Grato desde já!

6 Respostas

williamdasflores

pandorexona,
blz velho?

Cara, faz um favor…coloca os códigos entre “code”. É mais fácil visualisar :smiley:

drsmachado

Qual o erro?
Que linha ele referencia?

pandorexona

drsmachado:
Qual o erro?
Que linha ele referencia?

Especificamente, nas linhas 7 e 8!

adriano_si

Pando, blz ???

Pois bem, pelo que ví você já sacou como é a criação de um Objeto em Java e o erro que você está cometendo é comum de quando iniciamos no desenvolvimento de Arrays.

Ainda bem que é simples de resolver…

Vamos ver se consigo ser claro.

Quando você criou Aluno array[] = new Aluno[200]; você definiu um Array com 200 elementos, onde esses elementos são do tipo Aluno.

Só quando você cria um array em Java, a menos que os elementos do mesmo sejam inicializados explicitamente, os mesmos assumem seus valores padrão, o valor padrão de Objetos em Java é null.

Quando sua classe é criada, seu Array é criado com 200 elementos do tipo aluno setados com o valor null, ou seja por baixo dos panos vc tem

array[0] = null;

array[1] = null;

array[2] = null;

.

.

.

array[199] = null;

Aí quando você chama um método de um objeto que é nulo, acontece o NullPointerException (é o erro que aparece no console do seu NetBeans não ???)

Para resolver faça o seguinte antes da linha 7;

void cadastro(String nome, double nota){  
array[cont] = new Aluno();
array[cont].setNomeAluno(nome);  
array[cont].setMediaAluno(nota);  
cont++;
}

Porque agora você está atribuindo um novo Objeto ao seu elemento do array e o mesmo não será mais nulo.

Abs [] e bopns estudos.

williamdasflores

É isso ae…o Adriano deu uma aula…rsrsrs :smiley:

pandorexona

Pô, adriano, valeu!
Brigadão!
Agora consegui entender o erro! :smiley:

Criado 9 de maio de 2011
Ultima resposta 10 de mai. de 2011
Respostas 6
Participantes 4