[RESOLVIDO] Atributo com valor NULL

6 respostas
programaçãojava
D

Bom dia a todos!

Sou iniciante em programação e estou tendo uma dificuldade com um exercício simples que estou fazendo, onde o mesmo consiste em cadastrar o nome de uma pessoa através de um menu e também consultar o cadastro, porem ao consultar o cadastro a variável esta retornando null, gostaria de intender o que pode estar o ocorrendo.
Segue o código.

package contabancaria;

import java.util.Scanner;

public class ContaBancaria {
    public static void main(String[] args) {
        Menu m1 = new Menu();  
        m1.menu();     
    }    
}

//Classe Menu

private int opmenu;
Scanner opm = new Scanner(System.in); 
CadPessoa cad1 = new CadPessoa();

public void menu(){
    
    System.out.println("==========Menu==========");
    System.out.println("1 - Fazer cadastro ");
    System.out.println("2 - Acessar conta ");
    System.out.println("3 - Sair ");
    
    this.opmenu = opm.nextInt();

    if(opmenu == 1){
      
        cad1.cadpessoa();
      
    }
    
     if(opmenu == 2){
      
        System.out.println("Seu nome é "+cad1.getNomep());
        
    }     
    else {
        System.out.println("Você saiu");
    }
}

}

//Classe CadPessoa

public class CadPessoa {

private String nomep = this.nomep;
private int idadep;

Scanner op = new Scanner (System.in);

public void cadpessoa(){
      
  
    System.out.println("Digite seu nome:");
  
  this.nomep = op.nextLine();
            
    System.out.println("Cadastro realizado com sucesso ");
    
    Menu m1 = new Menu();
    System.out.println("\r\n");
    
    m1.menu(); //Retorna para o menu 
    
}

public String getNomep() {       
    return this.nomep;                 
}

Minha duvida é o seguinte, depois de cadastrar e retornar para o menu onde tem a opção Acessar Conta onde o mesmo deveria trazer o valor da variável nomep, porem retorna null. “Seu nome é null”, sei que existem outras maneiras de fazer o mesmo exercício, mas gostaria de intender o por que de não estar trazendo o valor na variável.

Desde ja, Obrigado .

6 Respostas

F

Seguinte: Null (Nulo) GERALMENTE é instanciação de objeto sem valor. O que isso significa? Significa que aqui:

Você está criando um novo objeto, e os valores que você definiu vão para nulo. Por isso o nome é null.

Dica: Você não precisa chamar um novo menu se você usar laços de repetição. Think about it!

F

Eu aconselho que você TENTE FAZER SOZINHO, mas como hoje eu to bonzinho, vou postar a solução aqui. Todavia, TENTE SOZINHO! Orientação à objetos não se aprende copiando da internet.

E aí, já tentou?

Confere então. Você só precisa mudar a classe Menu.java

import java.util.Scanner;

class Menu {
    private int opmenu;

    Scanner opm = new Scanner(System.in);
    CadPessoa cad1 = new CadPessoa();

    public void menu() {
        do {
            System.out.println("==========Menu==========");
            System.out.println("1 - Fazer cadastro ");
            System.out.println("2 - Acessar conta ");
            System.out.println("3 - Sair ");

            this.opmenu = opm.nextInt();

            if (opmenu == 1) {

                cad1.cadpessoa();

            }

            if (opmenu == 2) {

                System.out.println("Seu nome é " + cad1.getNomep());

            }
        } while (opmenu != 3);
            System.out.println("Você saiu");
    }
}
D

Opa obrigado mano, vou tentar aqui.

D

public class Menu {

private int opmenu;

Scanner opm = new Scanner(System.in); 
 
public void menu(){
    do{
    System.out.println("==========Menu==========");
    System.out.println("1 - Fazer cadastro ");
    System.out.println("2 - Acessar conta ");
    System.out.println("3 - Sair ");
    
    this.opmenu = opm.nextInt();
    
    CadPessoa cad1 = new CadPessoa();
                  
    if(opmenu == 1){
        
        cad1.cadpessoa();
       ///1 cad1.setNomep(opm.nextLine());
    }
    
    else if(opmenu == 2){
        //JOptionPane.showMessageDialog(null, "Seu nome é "+cad1.getNomep());
        System.out.println("Seu nome é "+ cad1.getNomep());
        
    }     
    else {
        System.out.println("Você saiu");
    }
    
    }while (opmenu == 1 || opmenu == 2);
    }
}

Fiz dessa forma retirei o codigo que cria novamente o objeto menui, porem ainda sim continua retornando null, vou continuar tentando aqui .

D

Consegui kkkk

estava colocando CadPessoa cad1 = new CadPessoa(); dentro do laço.

F

Exatamente, nesse caso ele ia instanciar novo objeto e ele viria null, hahaha

Criado 10 de janeiro de 2019
Ultima resposta 10 de jan. de 2019
Respostas 6
Participantes 2