Exception in thread "main" java.lang.NullPointerException

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]

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;

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;
}

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

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

[quote=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]

[/quote]