Erro java.lang.NullPointerException

5 respostas
java
W

olá sou novo em java e estou com uns problemas na minha classe main ele retorna esse problema, se alguém conseguir me ajudar eu agradeço.

java.lang.NullPointerException

public class TesteAeronave {

static Teclado t = new Teclado();
public static void main (String args[]){

	
	
	 
	 CadastroF[] e = new CadastroF[2];
	 CadastroFabri[] b = new CadastroFabri[2];
                              int y;

                                       
                    do {
                    System.out.println("Digite 1 para incluir uma nova Aeronave\n" + 
  			                   "    Digite 2 para incluir um novo Fabricante \n" + 
  			                     "    Digite 3 para apagar uma aeronave \n" + 
  			                      "    Digite 4 para Mostar todas as aeronaves \n" + 
  			                    "    Digite 5 para apagar um fabricante \n" +
  			                          "    Digite o numero 7 para sair\n");
                                         try {
                                         y = t.leInt();
                                  } catch (NumberFormatException ex) {
                                  System.out.println("Entrada inválida");
                                               y = 7;
                                                    }

                                                           switch (y) {
                         case 7:
             System.out.println("Finalizando");
                  continue;
                          case 1:
                        	  
                        	  Fabricante f1[] = new Fabricante[1];
                        	    f1[0] = new Fabricante (0, 515610, "agsdfads", "dsadasdas");
                        	    f1[0].exibeDados2();
                        	 for(int i=0; i<f1.length;i++){
                        	            f1[i].toString();
                        	        }
                        	 
                        	 
                             int qtdeAeronaves = t.leInt("Qtas Aeronaves ?");
                              
                              e = new CadastroF[qtdeAeronaves];
                              
                              for(int i=0;i<qtdeAeronaves;i++)
                              {
                                  e[i].registraAeroNaFrota(new Aeronave (52, t.leInt("Informe o Codigo do fabricante"), t.leString("Nome da Aeronave"), t.leString("Nome da Matricula") ));
                                 
                              }
                          
                              
                       
                        	  
                               break;
                           case 2:
                        	   
                               int qtdeFabricantes = t.leInt("Qtos fabricantes ?");
                               
                                b = new CadastroFabri[qtdeFabricantes];
                               
                               for(int i=0;i<qtdeFabricantes;i++)
                               {
                                   b[i].registraFabriEmMassa(new Fabricante (0, t.leInt("Informe o Codigo do fabricante"), t.leString("Nome do Fabricante"), t.leString("Nome do país do fabricante") ));
                                  
                               }
                           
                              

                               break;
                                       case 3:
                                    	   
                                    	  
                                          
                                    	int chaveID = t.leInt("qual o iD ?");
                                    	for(int i=0;i<e.length;i++)
                                   
                                    	 e[i].removerAeronave(chaveID);
                                    	     

                                      
                                    	        
                                    	   
                                         break;
                                    case 4:
                                    	
                                    //	Aeronave[] e1 = e.getFrota();
                                    //	 for(int i=0;i<e1.length;i++)
                                    //     {
                                    	//	int w = e1[i].getCodInterFabri();
                                    //		  if(e1[i]!=null)
                                    	//	 System.out.println(e1[i].toString());
                                    		 
                                    //		 for(int l=0;l<b.length;l++) 
                                    //			 if(b[l].getCodInterFabri == w) {
                                    	//			 System.out.println(b[l].toString());
                                    			// }
                                    		
                                            //  System.out.println(e1[i].toString());
                                               
                                    //     }
                                    	 
                                         break;
                                       case 5:
                                    	   
                                    	   
                                    	   int chaveID2 = t.leInt("qual o iD ?");
                                    	    
                                  
                                       	for(int i=0;i<e.length;i++) {
                                      	 b[i].removerFabricante(chaveID2);
                                      	 e[i].removerAeronave(chaveID2);  
                                    	   
                                       	}
                                     break;
                                         

                                                default:
                       System.out.println("Digite um valor entre 1 e 6 \n ou digite 7 para terminar!");
                                       break;
}

} while (y != 7);

}
import java.util.Random;

public class Aeronave {

Random random = new Random();

private int chaveId;

private int  codInterFabri;

private String nomeAero, matriAero;
public Aeronave(int chaveId, int codInterFabri, String nomeAero, String matriAero) {
		super();
		this.chaveId = getChaveId();
		this.codInterFabri = codInterFabri;
		this.nomeAero = nomeAero;
		this.matriAero = matriAero;
	}
	public int getChaveId() {
		return chaveId;
	}
	public int getCodInterFabri() {
		return codInterFabri;
	}
	public void setCodInterFabri(int codInterFabri) {
		this.codInterFabri = codInterFabri;
	}
	public String getNomeAero() {
		return nomeAero;
	}
	public void setNomeAero(String nomeAero) {
		this.nomeAero = nomeAero;
	}
	public String getMatriAero() {
		return matriAero;
	}
	public void setMatriAero(String matriAero) {
		this.matriAero = matriAero;
	}
	public void setChaveId(int chaveId) {
		this.chaveId = random. nextInt(10000);
	}
	
	@Override
	public String toString() {
		return "Nome da Aeronave:" + nomeAero + "Nome da Matricula" + matriAero + "Chave de identificação" + chaveId + "codigo do Fabricante" + codInterFabri  ;
	}
	
	public void geraChaveId(int a) {
		a = random. nextInt(10000);

	}
	
	
	
	    }
	
	
	
	
	import java.util.Random;
public class Fabricante {

Random random = new Random();

private int chaveId;

private int  codInterFabri;

private String nomeFabri, paisFabri;
public Fabricante(int chaveId, int codInterFabri, String nomeFabri, String paisFabri) {
		super();
		this.setChaveId(chaveId);
		this.setCodInterFabri(codInterFabri);
		this.setNomeFabri(nomeFabri);
		this.setPaisFabri(paisFabri);
	}



	public int getChaveId() {
		return chaveId;
	}



	public void setChaveId(int chaveId) {
		this.chaveId = random. nextInt(10000);
	}



	public String getNomeFabri() {
		return nomeFabri;
	}



	public void setNomeFabri(String nomeFabri) {
		this.nomeFabri = nomeFabri;
	}



	public int getCodInterFabri() {
		return codInterFabri;
	}



	public void setCodInterFabri(int codInterFabri) {
		this.codInterFabri = codInterFabri;
	}



	public String getPaisFabri() {
		return paisFabri;
	}



	public void setPaisFabri(String paisFabri) {
		this.paisFabri = paisFabri;
	}
	
	
	@Override
	public String toString() {
		return "Nome do Fabricante:" + nomeFabri + "País do fabricante" + paisFabri + "Chave de identificação" + chaveId + "codigo do Fabricante" + codInterFabri  ;
	}
	
	public void exibeDados() {
		System.out.println(nomeFabri);
		System.out.println(codInterFabri);
		System.out.println(paisFabri);
		System.out.println(chaveId);
	}
	
	public void exibeDados2() {
		System.out.println(nomeFabri);
		System.out.println(codInterFabri);
		System.out.println(paisFabri);		
	}

}
public class CadastroF {

private Aeronave[] frota;
private int qtdeAeronaves;

public CadastroF (int tamanhoFrota){
    frota = new Aeronave[tamanhoFrota];
}

public void registraAeroNaFrota(Aeronave a)
{
    if(qtdeAeronaves<frota.length)
        frota[qtdeAeronaves++] = a;
    else
        System.out.println("Sinto muito mas nao tem mais espaco no array");
}

public Aeronave[] getFrota()
{
    return frota;
}



public void removerAeronave(int chaveID) {
    for (int i = 0; i < frota.length; i++) {
    	Aeronave aeronave = frota[i];
        if (aeronave.getCodInterFabri() == chaveID) {
        	frota[i] = null;
            System.out.println("Aeronave Removido Com Sucesso");
            return;
        } else {
        	
        }
            
        
    }
    System.out.println("Nao encontrado");

}

}

public class CadastroFabri {

	
	private Fabricante[] fabricantes;
    private int qtdeFabricantes;
    
    public CadastroFabri (int tamanhoFabri){
    	fabricantes = new Fabricante[tamanhoFabri];
    }
    
    public void registraFabriEmMassa(Fabricante m)
    {
        if(qtdeFabricantes<fabricantes.length)
            fabricantes[qtdeFabricantes++] = m;
        else
            System.out.println("Sinto muito mas nao tem mais espaco no array");
    }
    
    public Fabricante[] getFabricante()
    {
        return fabricantes;
    }
    
    
    
    public void removerFabricante(int chaveID) {
        for (int i = 0; i < fabricantes.length; i++) {
        	Fabricante fabricante = fabricantes[i];
            if (fabricante.getCodInterFabri() == chaveID) {
            	fabricantes[i] = null;
                System.out.println("Aeronave Removido Com Sucesso");
                return;
            }
            System.out.println("Nao encontrado");
            }
                
            
        }

}

5 Respostas

rodriguesabner

Mostra o erro

staroski

Você está instanciando seus arrays e e b (que nome ilegível) mas não está inserindo nenhum elemento dentro deles, então ao acessar qualquer posição, a referência está null.

W

Screenshot_2

W

Olá ok entendi, foi mal, sou novo na programação minhas praticas são bem ruins ainda, queria te peguntar com resolver esse problema, visto que quando eu acesso o case 1, ele pede para inserir inserir as informações no array, não era para ele não ficar mais nulo?

staroski

No case 1 você só tá instanciando o array e, não está inicializando nenhuma posição dele, então quando vai acessar a posição e[i] a referência está null.

Criado 21 de junho de 2020
Ultima resposta 22 de jun. de 2020
Respostas 5
Participantes 3