Exception in thread "main" java.lang.NullPointerException

Olá, quando compilo meu programa, ela gera um menu, até ai tudo certo, eu escolho o cadastro de Usuário e ele cadastra e depois peço para ele me mostrar o cadastro e mostra também. Porém, quando peço para cadastrar a Banda do usuário, ele cadastra mas depois ele não consegue me mostrar por conta deste erro:

Exception in thread "main" java.lang.NullPointerException
        at GerBanda.impAllBandaCad(GerBanda.java:107)
        at MenuBanda.geraMenuBanda(MenuBanda.java:55)
        at TstShowTime.main(TstShowTime.java:14)

CÓDIGOS ENVOLVIDOS:

CLASSE TstShowTime:

import java.util.List;
import java.util.ArrayList;

public class TstShowTime extends Banda {
	
	Banda b1 = new ImplementsBanda();
	private static MenuBanda menuBanda = new MenuBanda();
	
	public static void main(String arg[]) {
		menuBanda.geraMenuBanda();
	} //novo fim main
}

CLASSE MenuBanda

import java.util.List;
import java.util.ArrayList;

public class MenuBanda {

	private Usuario usuario;
	private Entrada entrada = new Entrada();
	private GerBanda gerBanda = new GerBanda();
	private static ImplementsBanda cad;
	Banda b1 = new ImplementsBanda();
	Integrante integran = new Integrante();
	private static List<Usuario> bdCad = new ArrayList<Usuario>();
	private static Integrante integrante = new Integrante();
	private static Status status = new Status();
	
	public void geraMenuBanda() {
		boolean vai = true;
		int op = 0;
		
		while (vai) {
			System.out.println("\n\n\n1) Cadastrar usuario");
			System.out.println("2) Mostar cadastro usuario");
			System.out.println("3) Cadastrar Banda");
			System.out.println("4) Mostrar cadastro Banda");
			System.out.println("5) Sair");
			
			try {
				op = Integer.parseInt(entrada.entDados("\nEscolha uma opcao"));
			} catch (NumberFormatException nfe) {
				entrada.entDados("\nO valor da escolha deve ser um inteiro. Press <Enter> para continuar");
				continue;
			}
			
			switch(op){
			case 1: 
				System.out.println("\n1) Cadastrar usuario");
				usuario = new Usuario();
				usuario = gerBanda.cadUsu(usuario);
				break;
			case 2:
				System.out.println("\n2) Mostar cadastro usuario");
				gerBanda.impAllBdCad(); 
				break;
			case 3:
				System.out.println("\n3) Cadastrar Banda");
				cad = new ImplementsBanda();
				cad = gerBanda.cadBanda(cad);
				break;
			case 4:
				System.out.println("\n3) Mostrar cadastro Banda");
				gerBanda.impAllBandaCad();
				break;
			case 5:
				String resp = entrada.entDados("\nDeseja realmente sair do sistema? <s/n>");
				if (resp.equalsIgnoreCase("s")) {
					System.exit(0);
				}
				break;
			default:
				entrada.entDados("\nA opcao deve estar entre 1 e 5");
				break;
			}
		} //fim do while
	} //fim do geraMenuBanda
}

CLASSE GerBanda

import java.util.List;
import java.util.ArrayList;

public class GerBanda {
	
	private Usuario usuario;
	Banda b1 = new ImplementsBanda();
	private Entrada entrada = new Entrada();
	Integrante integran = new Integrante();
	private ImplementsBanda cad;
	private List<Usuario> bdCad = new ArrayList<Usuario>();
	private Integrante integrante = new Integrante();
	private Status status = new Status();
	
	public Usuario cadUsu(Usuario usuario) {
		System.out.println("\n\nCADASTRO SIMPLES");
		usuario.setNome(entrada.entDados("\nDiga o seu nome: "));
		usuario.setIdadeUsu(Integer.parseInt(entrada.entDados("Diga a sua idade: ")));
		
		try {
			usuario.setCel(entrada.entDados("Informe seu numero celular: "));
		} catch (InvalidCelException nfe) {
			System.out.println("\n CELULAR INVALIDO!!!");
		}
		
		bdCad.add(usuario);
		return usuario;
	} //fim do cadUsu
	
	public void impAllBdCad() {
		for (int i = 0; i < bdCad.size(); i++) {
			System.out.println("\n\n\n\n>>>>>> CADASTRO DE USUARIO <<<<<<");
			System.out.println("Seu nome e: " +bdCad.get(i).getNome());
			System.out.println("A sua idade e: " +bdCad.get(i).getIdadeUsu());
			System.out.println("CELULAR: "+bdCad.get(i).getCel());
		} 
	} //fim do impAllBdCad
	
	public ImplementsBanda cadBanda(ImplementsBanda cad) {
		cad.impInicio();
		cad.setNome(entrada.entDados("Diga o nome da banda: "));
		cad.setQtdIntegrantes(Integer.parseInt(entrada.entDados("Diga a quantidade de integrantes da banda: ")));
		cad.setNomeIntegrantes(entrada.entDados("Diga o nome de cada integrante: "));
		cad.setMscInfluente(entrada.entDados("Diga qual a musica mais influente ou famosa da banda: "));

		//====================================================================

		cad.getInfo().setEstilo(entrada.entDados("\n\n\nDiga o estilo musical da banda: "));
		cad.getInfo().setLocalFundacao(entrada.entDados("Diga o local de fundacao da banda: "));
		cad.getInfo().setAnoFundacao(Integer.parseInt(entrada.entDados("Diga o ano de fundacao da banda: ")));

		//==============================================================

		cad.getDisc().setPrimeiroAlbum(entrada.entDados("\n\n\nDiga o nome do primeiro album da banda: "));
		cad.getDisc().setMscPreferida(entrada.entDados("Diga sua musica preferida da Banda: "));
		cad.getDisc().setQtdAlbums(Integer.parseInt(entrada.entDados("Diga a quantidade de albums que a banda realizou: ")));

		//=======================================================================

		status.setNomeIntegrantes(entrada.entDados("\n\n\nDiga o nome do lider da banda: "));
		status.setQtdPremios(Integer.parseInt(entrada.entDados("Quantos premios a banda ja ganhou: ")));
		status.setReconhecimento(entrada.entDados("A banda e reconhecida mundialmente?: "));
		status.setMscInfluente(entrada.entDados("Qual a musica mais premiada da banda: "));

		//=======================================================================

		cad.getTurn().setUltimaTurne(entrada.entDados("\n\n\nDiga o local ou regiao da ultima turne: "));
		cad.getTurn().setPrimeiraTurne(entrada.entDados("Diga o local ou regiao da primeira turne : "));
		cad.getTurn().setQtdTurnes(Integer.parseInt(entrada.entDados("Diga a quantidade de turnes realizadas: ")));

		//======================================================================

		integrante.setNome(entrada.entDados("\n\n\nDiga o nome do seu integrante favorito: "));
		integrante.setIdade(Integer.parseInt(entrada.entDados("Diga a idade do integrante: ")));
		integrante.setInstrumento(entrada.entDados("Qual a funcao dele dentro da banda: "));

		//=======================================================================
		
		return cad;
	}
	
	public void impAllBandaCad() {
		//for(int i = 0; i < bdCad.size(); i++){
		
		//===================== SOBRE A BANDA =============

		System.out.println("\n\n>>>>>> INFORMACOES SOBRE A BANDA <<<<<<");
		System.out.println("Nome da Banda: " + cad.getNome());
		System.out.println("Quantidade integrantes: " + cad.getQtdIntegrantes());
		System.out.println("Nome dos integrantes: " + cad.getNomeIntegrantes());
		System.out.println("Musica mais influente ou famosa: " + cad.getMscInfluente());

		//=============== INFORMAÇÕES COMPLEMENTARES ==================
		System.out.println("\n\n>>>>>> INFORMACOES COMPLEMENTARES <<<<<<");
		System.out.println("nEstilo musical: " + cad.getInfo().getEstilo());
		System.out.println("Local de fundacao: " + cad.getInfo().getLocalFundacao());
		System.out.println("Ano de fundacao: " + cad.getInfo().getAnoFundacao());

		//===================== ALBUMS ========================

		System.out.println("\n\n>>>>>> SOBRE OS ALBUMS <<<<<<");
		System.out.println("O primeiro Algum foi: " + cad.getDisc().getPrimeiroAlbum());
		System.out.println("A sua musica preferida e: " + cad.getDisc().getMscPreferida());
		System.out.println("A quantidade de albums realizados foi: " + cad.getDisc().getQtdAlbums());

		//===================== STATUS ==================

		System.out.println("\n\n>>>>>> STATUS DA BANDA <<<<<<");
		System.out.println("Lider da banda: " + status.getNomeIntegrantes());
		System.out.println("Quantidade de premios ganhos: " + status.getQtdPremios());
		System.out.println("Reconhecimento: " + status.getReconhecimento());
		System.out.println("Musica mais premiada: " + status.getMscInfluente());

		//===================== TURNES =============

		System.out.println("\n\n>>>>>> SOBRE AS TURNES <<<<<<");
		System.out.println("O local ou regiao da ultima turne foi : " + cad.getTurn().getUltimaTurne());
		System.out.println("O local ou regiao da primeira turne foi : " + cad.getTurn().getPrimeiraTurne());
		System.out.println("A quantidade de turnes feitas foi : " + cad.getTurn().getQtdTurnes());

		//===================== INTEGRANTE ==============

		System.out.println("\n\n>>>>>> INTEGRANTE FAVORITO <<<<<<");
		System.out.println("Nome do integrante: " + integrante.getNome());
		System.out.println("A idade dele e: " + integrante.getIdade());
		System.out.println("A funcao dele e: " + integrante.getInstrumento());
		integrante.exibeEncerrar("FINAL!!!");
	} //fim do impAllBandaCad
}

O que tem na linha 107 dessa classe?

1 curtida

E aí! Sua exception tá no método impAllBdCad. Recomendo que você use um debugger e investigue passo a passo seu método.

[]'s

1 curtida

Campo “cad” na classe GerBanda parece estar null.
Você não devia atribuir um valor a ele ao cadastrar a banda?

1 curtida

System.out.println("Nome da Banda: " + cad.getNome());

Você esta querendo dizer algo assim:

private ImplementsBanda cad = 0;

public ImplementsBanda cadBand(ImplementsBanda cad) {
    this.cad = cad;
    //Resto do método
}
1 curtida

Muito obrigado! funcionou