Simbologia.
Um porém, procure dar significado as suas variáveis, para que elas te digam o que são, pois embora exista um padrão de comunicação com a máquina, lembre do padrão de comunicação humano em sua codificação.
Ex. CIENCIAS_DA_COMPUTACAO = 1, NOVO_CADASTRO = 2 é melhor que CC = 1, NC = 2.
Ex.:
import java.util.Arrays;
import javax.swing.JOptionPane;
public class Teste {
private static final int CURSO_CULINARIA = 0, CURSO_RADIALISTA = 1;
public static void main(String[] args) {
String[][] curso = new String[3][5];
int totalVagas = curso[CURSO_RADIALISTA].length;
for (int vaga = 0; vaga < totalVagas; vaga++) {
if (curso[CURSO_RADIALISTA]/*na posicao */[vaga] == null) {
String nomeAluno = JOptionPane.showInputDialog("Informe o nome do aluno");
if (nomeAluno != null) {
curso[CURSO_RADIALISTA][vaga] = nomeAluno;
JOptionPane.showMessageDialog(null, "Aluno: "+nomeAluno+" cadastrado");
}
break;//encontrou uma vaga, encerra o laço
}
}
Arrays.stream(curso).forEach(alunos -> System.out.println(Arrays.toString(alunos)));
}
}
O que eu espero passar, é a simbologia, não a codificação de exemplo.
Exemplo: qual a diferença entre um tabuleiro de Damas e um de Xadrez.
R.: nenhuma se o tabuleiro for o mesmo, mas o uso pode ser diferente.
Dessa forma, procure dar significado as coisas, vide a Cifra de César: https://pt.wikipedia.org/wiki/Cifra_de_César
Emborara eu tenha usado números constantes neste exemplo, o melhor seria uma enum, caso eu precisasse dessa informação em outra classe.
Tente codificar o resto e mostre onde possa estar tendo dificuldade, postando inclusive o que tenha feito.
Té+