Fórum Array de Objetos - duvida sobre nullpoint #580758

29/04/2017

0

pessoal se alguém puder tirar minha duvida ficarei agradecido.
Bom, tentei desenvolver esse código (sou um pouco leigo ainda nesta parte de array, listas, etc)eu fiz em outra classe e funcionou, mais nesta não ta funcionando, ta dando NullPointerException, se alguem tiver vendo algum erro e puder me ajudar, aguardo respostas, a... é o código é meio grandinho...
public class UsuarioDados {
    private String nome;
    private int dia;
    private int mes;
    private int ano;
    private String usuario;
    private String senha;
    private String cpf;
    private int tamanho;
    UsuarioDados dados[]=new UsuarioDados[100];
    public UsuarioDados(String nome, int dia, int mes, int ano, String usuario, String senha, String cpf){
        this.tamanho=0;
        this.nome=nome;
        this.dia=dia;
        this.mes=mes;    
        this.ano=ano;
        this.usuario=usuario;
        this.senha=senha;
        this.cpf=cpf;
    }
    public UsuarioDados(){}
    public void setT(int tamanho){
        this.tamanho=tamanho;
    }
    public int getT(){
        return this.tamanho;
    }
    public String getNome(){
        return this.nome;
    }
    public void setNome(String nome){
        this.nome=nome;
    }
    
    public String getUsuario(){
        return this.usuario;
    }
    public void setUsuario(String usuario){
        this.usuario=usuario;
    }
    
    public String getSenha(){
        return this.senha;
    }
    public void setSenha(String senha){
        this.senha=senha;
    }

    public int getDia() {
        return dia;
    }

    public void setDia(int dia) {
        this.dia = dia;
    }

    public int getMes() {
        return mes;
    }

    public void setMes(int mes) {
        this.mes = mes;
    }

    public int getAno() {
        return ano;
    }

    public void setAno(int ano) {
        this.ano = ano;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    
    
    public void mostrar(){
        for (int i=0;i<=this.tamanho;i++){
        //    System.out.println(this.dados[i].novoUS/*.getNome()*/);
        //    System.out.println(this.dados[i]/*.getUsuario()*/);
        }
    }
    public void entrar(){
        String usuarioT;
        String senhaT;
        int escolha;
        int i;
        Scanner scan=new Scanner(System.in);
        do{
        System.out.print("Usuario: ");
        usuarioT=scan.next();
        System.out.print("Senha: ");
        senhaT=scan.next();
        i=verificarConta(usuarioT);
        if(i!=-1){
            menu(i);
        }else{
            scan.nextLine();
            System.out.println("LOGIN OU SENHA INCORRETOS OU CONTA INEXISTENTE");
            System.out.println("O que deseja fazer?");
            System.out.println("1 - tentar novamente");
            System.out.println("2 - voltar ao menu");
            escolha=scan.nextInt();
            if(escolha==1){
                entrar();
            } 
        }
        }while(usuarioT.isEmpty() || senhaT.isEmpty()/* || usuarioT.equals(this.usuario) || senhaT.equals(this.senha)*/);
    }
    
    public void cadastro(){
        Scanner scan=new Scanner(System.in);
        do{            
        System.out.println("Cadastro de novo Usuario");
        System.out.println("OS CAMPOS MARCADOS COM ' * ' SÃO OBRIGATÓRIOS");
        System.out.println("Nome*: ");
        this.nome=scan.nextLine();
        System.out.println("Usuario*: ");
        this.usuario=scan.next();
        System.out.println("Senha*: ");
        this.senha=scan.next();
        scan.nextLine();
        //nome, dia, mes, ano, usuario, senha, cpf
        System.out.print("Data de nascimento* ");
        System.out.print("Dia: ");
        this.dia=scan.nextInt();
        System.out.print("Mês: ");
        this.mes=scan.nextInt();
        System.out.print("Ano: ");
        this.ano=scan.nextInt();
        scan.nextLine();
        System.out.println("DIGITE O CPF SEM PONTUAÇÃO OU TRAÇOS");
        System.out.println("CPF: ");
        this.cpf=scan.nextLine();
        if(nome.isEmpty() || usuario.isEmpty() || senha.isEmpty() || cpf.isEmpty() || dia==0 || mes==0 || ano==0){
            System.out.println("");
            System.out.println("DADOS OBRIGATORIOS NÃO PREENCHIDOS");
        }
        if((2017-ano)<18){
            System.out.println("NÃO É POSSIVEL CADASTRAR, O USUÁRIO É MENOR DE IDADE");
        }
        }while(cpf.isEmpty() || nome.isEmpty() || usuario.isEmpty() || senha.isEmpty() || dia==0 || mes==0 || ano==0 || /*(ano-2017)<18*/verificar(ano)==true || cpf.length()<11 || cpf.length()>11);
        System.out.println("SALVO");        
        UsuarioDados novoUS=new UsuarioDados(nome, dia, mes, ano, usuario, senha, cpf);
        this.dados[tamanho]=novoUS;
        this.tamanho++;
        int i=verificarConta(usuario);
        menu(i);
    }
    public static boolean verificar(int ano){
        if(2017-ano<18){
            return true;
        }
        return false;
    }
    public int verificaTamDad(UsuarioDados dados[]){
        if(dados[tamanho]!=null){
            return this.tamanho++;
        }
        return this.tamanho;
    }
    public int getTam(){
        return this.tamanho;
    }
    public void menu(int i){
        Scanner scan= new Scanner(System.in);
        Imoveis imovel= new Imoveis();
        int escolha=0;        
        do{
        //System.out.println("Olá "+this.nome);
        System.out.println("Olá "+this.dados[i].getNome());
        System.out.println("Escolha a opção desejada");
        System.out.println("1 - Comprar Imóvel");
        System.out.println("2 - Vender imóvel");
        System.out.println("3 - Alugar imóvel próprio (locador)");
        System.out.println("4 - Alugar imóvel de terceiros (inquilino)");
        System.out.println("5 - Histórico de operações");
        System.out.println("6 - Sair");
        escolha=scan.nextInt();
        switch(escolha){
            case 1:
                menuCompra();
                //imovel.mostrar();
                break;
            case 2:
                imovel.setVendedor(this.nome);
                imovel.Vender();
                break;
            case 3:
                break;
            case 4:
                break;
            case 5:
                break;
            
            default:
                System.out.println("opção inválida");
            case 6:
                //System.exit(0);
                break;
        }
        
        }while(escolha!=6);
    }
    public void addContasInicial(){
        //ADICIONANDO CONTAS ALEATORIAS
        //#############0
        
        UsuarioDados novo=new UsuarioDados();
        this.nome=("Pedro Henrique");        
        this.dia=(14);
        this.mes=(11);
        this.ano=(1995);
        this.usuario=("pedro");
        this.senha=("admin");
        this.cpf=("12345678911");
        novo=new UsuarioDados(nome, dia, mes, ano, usuario, senha, cpf);
        this.dados[tamanho]=novo;
        this.tamanho++;
}
         
Pedro Andrade

Pedro Andrade

Responder

Post mais votado

30/04/2017

Mano NullPointerException ocorre qnd tem nulo
exemplo:
for (int i=0;i<=this.tamanho;i++){
                //System.out.println(this.dados[i].novoUS.getNome());
                //System.out.println(this.dados[i].getUsuario());
}

ele vai passar por todos se algum "dados" estiver null ou vazio ocorre o erro
Invez de Arrays tenta usar List

Kervin Silva

Kervin Silva
Responder

Gostei + 2

Mais Posts

30/04/2017

Pedro Andrade

eu consegui resolver, pensei bastante e consegui fazer certinho... agora eu tenho que botar em algum lugar um array ou alguma outra estrutura de dados para ser o histórico, bem provavel que seja na classe que estão as variáveis de imoveis
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar