Ajuda com vetor de objetos java

Olá pessoal, sou um novato no fórum e também na programação, estou apenas no 2º periodo de S.I. Eis que o professor me passa a seguinte questao:
Escrever um programa em Java para definir uma classe de objetos com as seguintes características:

  1. Atributos privados:
    a. Matrícula
    b. Nome
    c. Curso (código)
  2. Métodos públicos:
    a. Construtores: sem e com argumentos
    b. Get e set para cada atributo
    c. Impressão dos atributos

Escrever uma classe Main que deverá conter o método main e executar as seguintes tarefas:

a) Instanciar n objetos da classe com o construtor com argumentos;
b) Construir uma matriz de strings (n x 3) contendo todos os dados dos alunos criados;
c) Imprimir em formato de tabulação (dados do aluno por linha em colunas);
d) Alterar o contudo de objetos;
e) “Excluir objetos”.

Eis o que eu ja fiz:



import static java.lang.System.*;
public class ClassAluno {
	private String nome;
	private String matr, codcur;
	ClassAluno vet[] = new ClassAluno[5];
	
	public ClassAluno(){
		nome="André";
		matr="5417";
		codcur="171";
	}
	
	public ClassAluno (String nome, String matr, String codcur){
		this.nome=nome;
		this.matr=matr;
		this.codcur=codcur;
	
	}
		
	public String getmatr(){     
		return matr;
	}
	
	public String getnome(){     
		return nome;
	}
	public String getcodcur(){     
		return codcur;
	}
	
	public void setx(String codcur, String matr, String nome) { 
		this.nome=nome;
		this.matr=matr;
		this.codcur=codcur;
	}
	
	
	public void print(){
	out.println ("Nome: " +nome);
	out.println ("Matricula: "+matr);
	out.println ("Código do Curso: "+codcur);
	}
	
}
/**
 * 
 */

/**
 * @author André
 *
 */
import java.util.Scanner;
import static java.lang.System.*;
public class Main {
		public static void main(String[] args) {
			
		int op=0;
		String nome, codcur, matr;
		Scanner ent = new Scanner (System.in);
		Scanner ent2 = new Scanner (System.in);
		while (op!=5){
		out.println ("Digite 1 para ver dados, 2 para cadastro, " +
				                      "3 para excluir cadastro,  4 para modificar cadastro, 5 para sair");	
		op = ent.nextInt();
		switch (op){
		case 1: 
			
		case 2:
			out.println ("Digite nome do aluno");
			nome=ent2.nextLine();
			out.println ("Digite matricula do aluno");
			 matr=ent2.nextLine();
			out.println ("Digite o codigo do curso do aluno");
			codcur=ent2.nextLine();
			ClassAluno v1 = new ClassAluno (nome,matr,codcur);
			
		
		case 3: 
			   break;
		case 4: 
			break;
		case 5 : 
			   break;
		default:  out.println ("Opção Inválida, tente novamente");
		         break;
		}
		
		}
		
		}

}

Então, agora eu não sei como passar o que o usuario digitar para esse vetor objeto (como o professor especificou), e não faço depois a minima ideia de como passar para a matriz, alguem pode dar alguma sugestao? Grato.

Boa noite André, bem vindo ao fórum,

primeira coisa que vc tem que fazer ,e tirar o ClassAluno vet[] = new ClassAluno[5]; da classe ClassAluno e colocar na classe Main,
aí cada vez que se cria um objeto “ClassAluno” você encere ele no vetor, a partir dai você terá os objetos no vetor e poderá manipula-los, qualquer duvida diferente posta aí.

Aí neste caso seria bem legal usar ArrayList ou alguma outra classe que que seja “Filha” da interface List… Mas como me parece que seu professor pediu para que fizesse com Array Bidimensional (Matriz) eu fiz um esboço do que eu acredito ser que ele esteja querendo que você faça! Lembrando que se estivesse usando Collection seria bem mais fácil, pois todos os métodos que ele pediu para você fazer já estão pronto… como é o caso do add (adiciona um objeto na lista), o remove(exclui um objeto da lista) e vários outros!

Segue o código:

public class Aluno {

	// 1) Atributos privados:
	private String nome;
	private String matricula;
	private String codigoCurso;
	String[][] matriz = new String[3][3];

	// a. Construtores: sem e com argumentos

	// Construtor Padrão - lembrando que construtor não é método!
	public Aluno() {
		super();
		// TODO Auto-generated constructor stub
	}

	// Construtor com argumentos - lembrando que construtor não é método!
	public Aluno(String nome, String matricula, String codigoCurso) {
		super();
		this.nome = nome;
		this.matricula = matricula;
		this.codigoCurso = codigoCurso;
	}

	// 2) Métodos públicos:
	public void adiciona(int linha, int coluna, String informacao) {
		matriz[linha][coluna] = informacao;
	}

	public void altera(int linha, int coluna, String novaInformacao) {
		matriz[linha][coluna] = novaInformacao;
	}

	public void exclui(int linha) {
		String vazia = " ";
		matriz[linha][0] = vazia;
		matriz[linha][1] = vazia;
		matriz[linha][2] = vazia;
	}

	// c. Impressão dos atributos
	public void imprimi() {
		System.out.println("Nome-----Matricula--Curso");
		System.out.println("*************************");
		for (int i = 0; i < matriz.length; i++) {
			for (int j = 0; j < matriz.length; j++) {
				System.out.printf(matriz[i][j] + "  " + " ");
			}
			System.out.println();
			System.out.println("*************************");
		}
	}

	// b. Get e set para cada atributo
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getMatricula() {
		return matricula;
	}

	public void setMatricula(String matricula) {
		this.matricula = matricula;
	}

	public String getCodigoCurso() {
		return codigoCurso;
	}

	public void setCodigoCurso(String codigoCurso) {
		this.codigoCurso = codigoCurso;
	}

	public String[][] getM() {
		return matriz;
	}

	public void setM(String[][] matriz) {
		this.matriz = matriz;
	}

}

Classe de teste (main)

public class TestaAluno {

	// Escrever uma classe Main que deverá conter o método main e executar as
	// seguintes tarefas:

	public static void main(String[] args) {

		// a) Instanciar n objetos da classe com o construtor com argumentos;
		Aluno aluno = new Aluno("João", "0001", "314");
		Aluno aluno1 = new Aluno("Pedro", "0002", "300");
		Aluno aluno2 = new Aluno("Maria", "0003", "314");

		// b) Construir uma matriz de strings (n x 3) contendo todos os dados
		// dos alunos criados;

		// quando é instanciada a Classe Aluno, uma Matriz de 3x3 é
		// instanciada também, pois a matriz está sendo instanciada no atributo da Classe Aluno

		// adicionando os objetos do tipo Aluno nas linhas e colunas da Matriz
		aluno.adiciona(0, 0, aluno.getNome());
		aluno.adiciona(0, 1, aluno.getMatricula());
		aluno.adiciona(0, 2, aluno.getCodigoCurso());

		aluno.adiciona(1, 0, aluno1.getNome());
		aluno.adiciona(1, 1, aluno1.getMatricula());
		aluno.adiciona(1, 2, aluno1.getCodigoCurso());

		aluno.adiciona(2, 0, aluno2.getNome());
		aluno.adiciona(2, 1, aluno2.getMatricula());
		aluno.adiciona(2, 2, aluno2.getCodigoCurso());

		// c) Imprimir em formato de tabulação (dados do aluno por linha em
		// colunas);
		aluno.imprimi();

		System.out.println("Alterando os dados da Matriz na linha 0, coluna 0...");

		// d) Alterar o conteudo de objetos;

		// alterando os dados da matriz, na coluna 0 e linha 0, passados como
		// argumento para o método altera();
		aluno.altera(0, 0, "Fernanda");

		System.out.println("Imprimindo matriz com dados alterados...");

		// imprimindo a Matriz com dados alterados
		aluno.imprimi();

		// e) "Excluir objetos".

		// excluindo um objeto da Matriz
		System.out.println("Excluindo dados da Matriz...");
		aluno.exclui(1);

		// imprimindo a matriz sem o objeto excluido!
		aluno.imprimi();

	}
}

Resultado no Console:

Nome-----Matricula--Curso
*************************
João   0001   314   
*************************
Pedro   0002   300   
*************************
Maria   0003   314   
*************************
Alterando os dados da Matriz na linha 0, coluna 0...
Imprimindo matriz com dados alterados...
Nome-----Matricula--Curso
*************************
Fernanda   0001   314   
*************************
Pedro   0002   300   
*************************
Maria   0003   314   
*************************
Excluindo dados da Matriz...
Nome-----Matricula--Curso
*************************
Fernanda   0001   314   
*************************
 //dado excluido          
*************************
Maria   0003   314   
*************************

Acho que é isso!

Abs!

Opa, valeu ai a ajuda, ppro11 voce praticamente fez meu trabalho. Mas a questao é o seguinte, o professor falou na sala que os n objetos seriam um vetor para ser instaciado.
então fiz:

Na classe Main

ClassAluno vet[] = new ClassAluno[5];
//depois:
	out.println ("Digite nome do aluno");
			nome=ent2.nextLine();
			out.println ("Digite matricula do aluno");
			 matr=ent2.nextLine();
			out.println ("Digite o codigo do curso do aluno");
			codcur=ent2.nextLine();
			vet[x].setaluno (nome,matr,codcur);

Na classe ClassAluno:

	public void print2(ClassAluno v1){
		out.println ("Nome: " +v1.nome);
		out.println ("Matricula: "+v1.matr);
		out.println ("Código do Curso: "+v1.codcur);
		}

Porém assim que termino de botar os dados no console, dá o seguinte erro:
Exception in thread “main” java.lang.NullPointerException
at Main.main(Main.java:41)

Então esse erro é pq você não criou (instanciou) o Aluno com a palavra chave new…

Esta como o new sim: ClassAluno vet[] = new ClassAluno[5];

Então esse new está criando o objeto array, mas é necessário outro new em Aluno; Até pq você está trabalhando com dois objetos um Array e um Aluno, logo é necessário criar dois objetos, ou seja, dar new em dois objetos!

Tipo: private String nome = new String(); ?

não… tipo:

Aluno aluno = new Aluno();