Exception in thread "main" java.lang.NullPointerException

5 respostas
thisenrose

Olá galera, estou na minha primeira aula de orientação a objeto e pintou uma dúvida…Fazendo além do necessário para o exercicio resolvi ampliar a quantidade de alunos na pesquisa.
Minha dúvida é, porque ocorre o erro? Está errado o modo como criei os objetos? Muito obrigado.
obs:Classes Aluno e AlunoTest(main)

Scanner sc = new Scanner(System.in);
	System.out.println("Informe a quantidade de alunos: ");
	qntAlunos = sc.nextInt();
	Aluno as[] = new Aluno[qntAlunos];[color=cyan] [size=18]// NESSE MOMENTO PASSA A EXISTIR as[0] e as[1] se o qntAlunos for igual a 2?[/size][/color]
	for (int s = 0; s < qntAlunos; s++) {
		System.out.println("Informe o nome");
		nome = sc.next();
		as[s].darNome(nome); // [color=red]LINHA 29[/color]

Informe a quantidade de alunos:
[color=green]2[/color]
Informe o nome
[color=green]Thiago[/color]
[color=red]Exception in thread “main” java.lang.NullPointerException
at AlunoTest.main(AlunoTest.java:29)[/color]

5 Respostas

diego.sas

Fala thisenrose;

No momento que vc digitou o nome, vc terá que criar um novo aluno, setar o nome dele e adicionar no Array.

Flw

as[s].darNome(nome); // LINHA 29 

// É o mesmo que.
null.darNome(nome);
// Correto
Aluno x = new Aluno();
x.darNome(nome);
as[s] = x;
thisenrose

Certo, mas minha intenção seria crirar um Array de aluno para poder armazenar os dados em diferentes objetos alunos. Ai no seu caso o usuario não pode informar a quantidade de alunos desejada.

O que eu esperava que acontecesse era :

//Classe AlunoTest

Aluno as[] = new Aluno[qntAlunos];

for (int s = 0; s < qntAlunos; s++) {

System.out.println(Informe o nome);

nome = sc.next();

as[s].darNome(nome);    [color=cyan]// NESSA Linha eu esperava que a variavel nome entrasse no as[0] (objeto de Aluno ) e o objeto armazenasse o atributo nome mas ocorre o erro;[/color]
//Classe Aluno

public void darNome(String seuNome) {

nome = seuNome;

}
asousaj
Scanner sc = new Scanner(System.in);
System.out.println("Informe a quantidade de alunos: ");
qntAlunos = sc.nextInt();
Aluno as[] = new Aluno[qntAlunos];
for (int s = 0; s < qntAlunos; s++) {
System.out.println("Informe o nome");
nome = sc.next();
as[s] = new aluno(); 
as[s].darNome(nome); 
}

Assim não funciona?

— edit
melhor usar mesmo o que o diego.sas lhe passou

thisenrose

Opa! Agora foi… Entendi o procedimento. Valeu a ajuda.
Obs: Não existe um fórum tão bom para programação quanto esse.

diego.sas

thisenrose:
Olá galera, estou na minha primeira aula de orientação a objeto e pintou uma dúvida…Fazendo além do necessário para o exercicio resolvi ampliar a quantidade de alunos na pesquisa.
Minha dúvida é, porque ocorre o erro? Está errado o modo como criei os objetos? Muito obrigado.
obs:Classes Aluno e AlunoTest(main)

Scanner sc = new Scanner(System.in); System.out.println("Informe a quantidade de alunos: "); qntAlunos = sc.nextInt(); Aluno as[] = new Aluno[qntAlunos];[color=cyan] [size=18]// NESSE MOMENTO PASSA A EXISTIR as[0] e as[1] se o qntAlunos for igual a 2?[/size][/color] for (int s = 0; s < qntAlunos; s++) { System.out.println("Informe o nome"); nome = sc.next(); // Neste ponto vc faz conforme mencionado abaixo. Aluno x = new Aluno(); x.darNome(nome); as[s] = x;

Informe a quantidade de alunos:
[color=green]2[/color]
Informe o nome
[color=green]Thiago[/color]
[color=red]Exception in thread “main” java.lang.NullPointerException
at AlunoTest.main(AlunoTest.java:29)[/color]

Criado 10 de novembro de 2011
Ultima resposta 10 de nov. de 2011
Respostas 5
Participantes 3