1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Manipulando Listas de objetos em Java

Estou com um problema ao criar uma lista de objetos em java. Preciso criar uma lista de objetos onde, cada objeto é constituido pelos seguintes atributos

        String nome;
        String email;
        String telefone;
        String celular;
        String endereco;
        String curso;
        int matricula;
        int numDeAulas;
        int numDeFaltas;
        List<Float> notas = new ArrayList();

Estou inserindo os objetos da seguinte forma:

 System.out.print("Matricula: ");
                    matricula = scanner.nextInt();
                    System.out.print("Nome: ");
                    nome = scanner.next();
                    System.out.print("Email: ");
                    email = scanner.next();
                    System.out.print("Telefone: ");
                    telefone = scanner.next();
                    System.out.print("Celular: ");
                    celular = scanner.next();
                    System.out.print("Endereco: ");
                    endereco = scanner.next();
                    System.out.print("curso: ");
                    curso = scanner.next();
                    System.out.print("Numero de faltas: ");
                    numDeFaltas = scanner.nextInt();
                    System.out.print("Numero de aulas: ");
                    numDeAulas = scanner.nextInt();
                    System.out.print("De o numero de notas a inserir: ");
                    tmp = scanner.nextInt(); 

                    for( int i=0; i<tmp; i++ )
                    {
                        System.out.print("Nota: ");
                        tmpf = scanner.nextFloat();
                        notas.add(tmpf);

                    }

                    System.out.print("Numero de notas inseridas para o aluno: " + notas.size() + "\n");

                    //Alocando memoria para o objeto

                    aluno = new Aluno( nome, email, telefone, celular, endereco, curso, matricula,
                                       numDeAulas, numDeFaltas, notas );
                    alunos.add(aluno); //a cada objeto criado, é a no adicionado ao vetor alunos
                    notas.clear(); //limpar o vetor para não haver conflitos
                    aluno.imprimeDadosALuno(alunos);

Criei um método para estar se os objetos estão sendo inseridos corretamente. Constatei que está tudo certo, menos a lista de notas do aluno. Implementei o metodo abaixo.

   public void imprimeDadosALuno( List<Aluno> alunos) {
        List<Float> notas = new ArrayList();
        for( int i=0; i<alunos.size(); i++ ){
            System.out.print( "Nome aluno: "       + alunos.get(i).getNome()        + "\n" );
            System.out.print( "E-mail do eluno: "  + alunos.get(i).getEmail()       + "\n" );
            System.out.print( "Telefone: "         + alunos.get(i).getTelefone()    + "\n");
            System.out.print( "Celular: "          + alunos.get(i).getCelular()     + "\n");
            System.out.print( "Endereco: "         + alunos.get(i).getEndereco()    + "\n");
            System.out.print( "Curso: "            + alunos.get(i).getCurso()       + "\n");
            System.out.print( "Matricula: "        + alunos.get(i).getMatricula()   + "\n" );
            System.out.print( "Numero de aulas: "  + alunos.get(i).getNumDeAulas()  + "\n" );
            System.out.print( "Numero de faltas: " + alunos.get(i).getNumDeFaltas() + "\n" );
            notas = alunos.get(i).getNotas();
            System.out.print("Numero de notas recebidos e " + notas.size() + "\n" );
            for( int j=0; j<notas.size(); j++) {
                System.out.print("Nota " + ( j + 1 ) + ":" + notas + "\n" );
            }
        }

    }

Construtor da minha classe aluno

    public Aluno( String nome, String email, String telefone, String celular,
           String endereco, String curso, int matricula, int numDeAulas,
           int numDeFaltas, List<Double> notas ){
        this.notas_ = new ArrayList();
        System.out.print("Criando aluno por atributo\n");
        nome_ = nome;
        email_ = email;
        telefone_ = telefone;
        celular_ = celular;
        this.endereco_ = endereco;
        this.curso_ = curso;
        this.matricula_ = matricula;
        this.numDeAulas_ = numDeAulas;
        this.numDeFaltas_ = numDeFaltas;
        this.notas_ = notas;
    }

O print no método me mostra que o vetor acessado tem tamanho 0. A questão é a seguinte. Estou acostumado com C/C++ e alguma coisa do Java ainda não deu tempo de aprender.

  • @Willian, qual a pergunta? Está dando erro? Qual?

    Leonardo Wolter   10 de jun de 2013
  • Não dá erro de compilação. Mas quando executo não consigo acessar objetos setados na lista. Me parece que é um problema ao inserir os objetos no vetor, ou ao acessá-los. Nâo acredito ser erro de lógica, mas de sintaxe. O mesmo programa em C++ funcionou perfeitamente, deve ser algum detalhe muito sutil. .

    Willian Rodrigues Andrade   10 de jun de 2013
  • De um System.out.println(lista.size()) para ver se a lista ta vazia

    Leonardo Wolter   10 de jun de 2013
  • Dá uma edita na pergunta, para ficar somente com a parte que vc tem dúvida, pois tem muito código.

    Demys Cota   10 de jun de 2013
  • Mostre pra gente o construtor da sua classe Aluno.

    Felipe   10 de jun de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags interface java orientação-a-objetos polimorfismo ou faça a sua própria pergunta.