Problema com ArryList (gerando exception na tentativa de add)

7 respostas
ffiorim

Olá amigos, Estou com um problema quando tento add um objeto no meu Arraylist, dá uma execption: "Exception in thread "main" java.lang.NullPointerException"

Nesse programa quero criar um objeto Aluno que tem os atributos nome, idade e peso; e esse objeto vai ser adicionado a um Arraylist turma, e essa lista será gravada em disco. Abaixo segue as 3 classes, e a saida.
Se puderem me ajudar estou meio travado nessa parte.

Obrigado!

Classe Aluno
package academico;

import java.io.Serializable;
/**
 *
 * @author 
 */
public class Aluno implements Serializable{
    private int idade;
    private double peso;
    private String nome;  
   
    /** Creates a new instance of Aluno */
   Aluno ()
    {
    }
           
            public String getnome(){
            return nome;
        }
            public int getidade(){
            return idade;
        }
            public double getpeso(){
            return peso;
        }  
            
            public void setNome(String nome)
            {
                this.nome = nome; 
            }
            
             public void setIdade(int idade)
            {
                this.idade = idade; 
            }
             
              public void setPeso(double peso)
            {
                this.peso = peso; 
            }

            public String toString() //formato de "saida"/"gravacao"
        {
            return (this.nome + " / " + "idade: " + this.idade + "\n" + "Peso: " + this.peso);
        }    
        

}
Classe Aplicacao "main"
package academico;
/**
 *
 * @author 
 */
public class Aplication {  
    
    public static void main(String[] args) 
    {
    int opcao; 
    Interface inf = new Interface();
    opcao =inf.mostraMenu();
 for(;;)
         {
             opcao = inf.mostraMenu();
             if(opcao==0)
             {
                  inf.agradecimento();
                 break;
             }
             switch (opcao)
             {
                 case 1:
                    inf.CriarAluno();
                    break;
                 case 2:
                    inf.excluirAluno();
                    break;
                 case 3:
                    inf.imprimirAluno();
                    break;
                 case 4:
                    inf.imprimirAlunos();
                        break;
                 case 6:
                     inf.gravaObjeto();
             }                        
         }

    }
}
Classe Interface *classe com oroblema do ArrayList package academico;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
/**
 *
 * @author 
 */
public class Interface
{
    //Interface inf = new Interface();
    Scanner teclado=new Scanner(System.in);
    ArrayList turma = null;
    
          // Cria o objeto serializado
    public void Interface()
    {
    }
public int mostraMenu()
{   
        int opcao;
        System.out.println("##########   MENU Sitema   ########## \n");
        System.out.println("Digite 0 para sair do Sistema.");
        System.out.println("Digite 1 para incluir aluno na turma.");
        System.out.println("Digite 2 para excluir aluno na turma.");
        System.out.println("Digite 3 para imprimir aluno.");
        System.out.println("Digite 4 para imprimir alunos.");
        System.out.println("Digite 5 para salvar em arquivo.");
        System.out.println("Digite 6 para importar alunos.\n\n##########   MENU Sitema   ########## \n\nOpção: ");
        opcao=teclado.nextInt();
        return opcao;
}
public void agradecimento()
    {
        System.out.println("Obrigado por você usar este sistema!");
    }

public Aluno CriarAluno()
{
    Aluno aluno = new Aluno();
    String tempNome;
    int tempIdade;
    double tempPeso;
   
    System.out.println("Digite nome do aluno: ");
    aluno.setNome(tempNome=teclado.next());
    System.out.println("Digite Idade do aluno: ");
    aluno.setIdade(tempIdade=teclado.nextInt());
    System.out.println("Digite Peso do aluno: ");
    aluno.setPeso(tempPeso=teclado.nextDouble());
    turma.add(aluno); //erro!!!
    
    return (aluno);
}

public void excluirAluno()
{

}

public void imprimirAluno()
{

}

public void imprimirAlunos()
{

}
public void gravaObjeto()
{
    try
        {
            //Gera o arquivo para armazenar o objeto
            FileOutputStream arquivoGrav =new FileOutputStream("./saida.dat");
            //Classe responsavel por inserir os objetos
            ObjectOutputStream objGravar = new ObjectOutputStream(arquivoGrav);
            //Grava o objeto cliente no arquivo
            objGravar.writeObject(turma);
            objGravar.flush();
            objGravar.close();
            arquivoGrav.flush();
            arquivoGrav.close();
            System.out.println("Objeto gravado com sucesso!");
        }
        
        catch (IOException erro)
        {
               erro.printStackTrace( );
        }
       
        
        System.out.println("Recuperando objeto: ");
        try
        {
            //Carrega o arquivo
            FileInputStream arquivoLeitura = new FileInputStream("./saida.dat");
            //Classe responsavel por recuperar os objetos do arquivo
            ObjectInputStream objLeitura =new ObjectInputStream(arquivoLeitura);
            System.out.println(objLeitura.readObject());
            objLeitura.close();
            arquivoLeitura.close();
        }
        catch( Exception e ){
                e.printStackTrace( );
        }
}
}

Agora a saida


########## MENU Sitema ##########

Digite 0 para sair do Sistema.
Digite 1 para incluir aluno na turma.
Digite 2 para excluir aluno na turma.
Digite 3 para imprimir aluno.
Digite 4 para imprimir alunos.
Digite 5 para salvar em arquivo.
Digite 6 para importar alunos.

########## MENU Sitema ##########

Opção:
1
Digite nome do aluno:
franz
Digite Idade do aluno:
21
Digite Peso do aluno:
63
Exception in thread "main" java.lang.NullPointerException
at academico.Interface.CriarAluno(Interface.java:56)
at academico.Aplication.main(Aplication.java:24)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)

7 Respostas

B

Tenta instanciar turma com um ArrayList antes de usá-lo.

Paulo_Silveira

na linha 16, turma foi declarado e ainda esta como null:

ArrayList turma = null;

deveria estar

ArrayList turma = new ArrayList();

Lembre-se: sempre que tomar NullPointerException fique contente, porque é o erro mais facil de se corrigir, ele acessou uma referencia que nao se referenciava para objeto algum. Recomendo voce ler um pouco mais sobre referencias e objetos nesse comeco, pra afixar os conhecimentos.

ffiorim

Eu tentei instanciar

ArrayList turma=new Arraylist

Seria isso?
Mas o netbeans dá erro e as sugestões são criar uma class ArryList no pacote Academico e comentar a linha

ffiorim

Opa… vou ler sim…

Obrigado

B

ffiorim:
Eu tentei instanciar

ArrayList turma=new Arraylist

Seria isso?
Mas o netbeans dá erro e as sugestões são criar uma class ArryList no pacote Academico e comentar a linha

List turma = new ArrayList();

Lembre-se de importar os pacotes deles.

ffiorim

Bruno, adicionei na classe Interface:

ArrayList turma=new Arraylist();

Mas a IDE (netbeans) diz erro na linha e sugere “criar class ArrayList”, não consigo enxergar porque do erro, a declaraçãoe está certa acho.

Porque você sugeriu

List turma=new Arraylist();

Esse List é lista?

Obrigado

B

ffiorim:
Bruno, adicionei na classe Interface:

ArrayList turma=new Arraylist();

Mas a IDE (netbeans) diz erro na linha e sugere “criar class ArrayList”, não consigo enxergar porque do erro, a declaraçãoe está certa acho.

P/ facilitar:

import java.util.*

Criado 25 de junho de 2008
Ultima resposta 25 de jun. de 2008
Respostas 7
Participantes 3