Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Duvida com relação a matrizes no java.

Não consigo fazer funcionar... aguem poderia me ajudar?

public class Notas {
    double notas;
}
public class Nomes {
     String nome;
}
public class Turma {
     Nomes[] nomesAlunos;
    Notas[][] notasAlunos;
}
public class ProgramaAluno {


    public static void main(String[] args) {

        Turma h47 = new Turma();
        h47.nomesAlunos = new Nomes[2];
        h47.notasAlunos = new Notas[2][4];

        h47.nomesAlunos[0] = new Nomes();
        h47.nomesAlunos[0].nome = "aluno01";

        h47.notasAlunos[0][0] = new Notas();
        h47.notasAlunos[0][0].notas = 08.0;
        h47.notasAlunos[0][1].notas = 04.0;
        h47.notasAlunos[0][2].notas = 09.0;
        h47.notasAlunos[0][3].notas = 06.0;

        h47.nomesAlunos[1] = new Nomes();
        h47.nomesAlunos[1].nome = "aluno02";

        h47.notasAlunos[1][1] = new Notas();
        h47.notasAlunos[1][0].notas = 05.0;
        h47.notasAlunos[1][1].notas = 06.0;
        h47.notasAlunos[1][2].notas = 01.0;
        h47.notasAlunos[1][3].notas = 08.0;

        System.out.println("funciona");

    }
}
1 resposta
solução!

Bom dia Junielton, tudo bem? O problema que está ocorrendo é pelo seguinte:

h47.notasAlunos = new Notas[2][4];

Nessa linha acima, está sendo criado uma matriz de tamanho 2x4, entretando, como trata-se de um tipo objeto Notas, o valor default é inicializar cada posição da matriz com null. Sendo assim, você precisa atribuir um objeto do tipo Notas para cada posição da sua matriz, assim como está sendo feito nessa linha:

h47.notasAlunos[0][0] = new Notas();

Caso contrário, o seguinte código jogara uma NullPointerException:

h47.notasAlunos[0][1].notas = 04.0;
h47.notasAlunos[0][2].notas = 09.0;
h47.notasAlunos[0][3].notas = 06.0;

Para resolver isso, podemos inicializar cada posição da matriz com um objeto Notas usando dois laços for:

public class ProgramaAluno {
    public static void main(String[] args) {

        Turma h47 = new Turma();
        h47.nomesAlunos = new Nomes[2];
        h47.notasAlunos = new Notas[2][4];

        h47.nomesAlunos[0] = new Nomes();
        h47.nomesAlunos[0].nome = "aluno01";

        inicializaMatriz(h47);

        h47.notasAlunos[0][0].notas = 08.0;
        h47.notasAlunos[0][1].notas = 04.0;
        h47.notasAlunos[0][2].notas = 09.0;
        h47.notasAlunos[0][3].notas = 06.0;

        h47.nomesAlunos[1] = new Nomes();
        h47.nomesAlunos[1].nome = "aluno02";

        h47.notasAlunos[1][0].notas = 05.0;
        h47.notasAlunos[1][1].notas = 06.0;
        h47.notasAlunos[1][2].notas = 01.0;
        h47.notasAlunos[1][3].notas = 08.0;

        System.out.println("funciona");

    }

    private static void inicializaMatriz(Turma h47) {
        for(int i = 0; i < h47.notasAlunos.length; i++) {
            Notas[] notas = h47.notasAlunos[i];

            for(int j = 0; j < notas.length; j++) {
                h47.notasAlunos[i][j] = new Notas();
            }
        }
    }
}
class Notas {
    double notas;
}
class Nomes {
     String nome;
}
class Turma {
     Nomes[] nomesAlunos;
     Notas[][] notasAlunos;
}

Abraço!