Erro NullPointerException

Olá, sei que esse erro é ridículo, mas fazer o quê? Se eu não tirar essa dúvida, não aprenderei. Então segue o código:

Quando cadastro um aluno e seleciono a opção 2 Pesquisa, dá erro. O que estou fazendo de errado? Preciso de ajuda.
Se a comparação está errada, o eclipse não deveria acusar erro?

import java.util.Scanner;


public class Principal {

	public static void main(String[] args) {

		int i = 0;
		int opcao = 0;
		Aluno[] vetAlunos = new Aluno[1000];
		Scanner sc = new Scanner(System.in);

		do {
			System.out.println("------------------");
			System.out.println("1 - Cadastrar");
			System.out.println("2 - Pesquisar (RA)");	
			System.out.println("3 - Imprimir Todos");
			System.out.println("4 - Contar Cadastrados");
			System.out.println("5 - Excluir (RA)");
			System.out.println("99 - Sair");
			System.out.println("------------------");
			System.out.println("Digite a opção desejada: ");
			opcao = sc.nextInt();

			if (opcao == 1) {
				Aluno NovoAluno = new Aluno();
				System.out.println("Digite o nome: ");
				NovoAluno.Nome = sc.next();
				System.out.println("Digite o RA: ");
				NovoAluno.Ra = sc.nextInt();
				System.out.println("Digite a mensalidade: ");
				NovoAluno.Mensalidade = sc.nextDouble();

				vetAlunos[i] = NovoAluno;
				i = i +1;
				System.out.println("Cadastro realizado com sucesso!");
			}
			else 
			{
				if (opcao == 2) {
					Aluno novoAluno = new Aluno();
					System.out.println("RA: ");
					novoAluno.Ra = sc.nextInt();
					for (i = 0; i < vetAlunos.length; i++) {
						if (vetAlunos != null) {
							if (vetAlunos[i].equals(novoAluno.Ra)) {
								System.out.println("Detalhes do cadastro: ");
								System.out.println(novoAluno.Nome);
								System.out.println(novoAluno.Ra);
								System.out.println(novoAluno.Mensalidade);
							}
						}
					}
				}
				else {
					if (opcao == 3) {
						for (i = 0; i < vetAlunos.length; i++) {
							if (vetAlunos[i] != null) {
								System.out.println("Nome: "+vetAlunos[i].Nome);
							}
						}
					}
				}
			}
		} while (opcao != 99);
		sc.close();
	}
}

Posta o stack trace com o erro pra gente poder analisar…

Você verificou com

if (vetAlunos != null)

Apenas se o array era nulo e não a posição que você deseja portanto em

if (vetAlunos[i].equals(novoAluno.Ra))

lança a NullPointerException.

Para arrumar o seu problema em

if (vetAlunos != null)

mude para

if (vetAlunos[i] != null)

O seu código ainda está errado, como por exemplo no seu cadastro.

Outras observações:

Nome de váriaveis e atributos devem sempre ser camelCase.

O correto é “nome” e não “Nome”, “mensalidade” e não “Mensalidade”, “ra” e não “Ra” e por fim, “novoAluno” e não “alunoNovo”.

E para concluir:

Se você não tem ideia de quantos objetos você quer no seu Array (acredito que seja o seu caso visto que você criou um array de 1000 posições). Use uma implementação de List.

Exemplo:

List<Aluno> lista = new ArrayList<Aluno>();

Para adicionar algo nele:

Aluno aluno = new Aluno();
lista.add(aluno);

Para percorrer ele:

for(Aluno aluno : lista) {
System.out.println(aluno.nome);
}

Para pegar algum objeto de uma posição especifica:

int indice = 5;
lista.get(indice);