Java - Error null

 
Vista:
sin imagen de perfil

Error null

Publicado por joaquin (5 intervenciones) el 28/11/2022 22:38:59
Buenas muchas gracias de ante mano
Soy nuevo desarrollando en java, estoy realizando un proyecto para un software de un aeropuerto como ejercicio de mi curso en java.
En este caso es sobre POO ya tengo los objetos creados con sus respectivos constructores y getters y sus datos ya completados en el codigo, pero al momento de llamarlos me aparece un error diciendo que estan vacios, por lo que entiendo.
este es el error:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Proyecto_1.Aeropuerto.getNombre()" because "aeropuertos[i]" is null

MAIN CLASS:

package Proyecto_1;

import java.util.Scanner;

public class Principal {
static Scanner entrada = new Scanner(System.in);
final static int num = 4;
static Aeropuerto aeropuertos[] = new Aeropuerto[num];


public static void main(String[] args){
menu();
insertarDatosAeropuerto(aeropuertos);



}



public static void insertarDatosAeropuerto(Aeropuerto aero[]){

aero[0] = new Publicos (10000000, "Aeroparque Internacional Jorge Newbery", "Buenos Aires", "Argentina");
aero[0].insertarCompañia(new Compañia("Fly bondi"));
aero[0].insertarCompañia(new Compañia("Aerolineas Argentinas"));
aero[0].getCompañia("Fly bondi").insertarVuelo(new Vuelo("IB20","Buenos Aires","Puerto Madryn",12000,150));
aero[0].getCompañia("Fly bondi").insertarVuelo(new Vuelo("IB21","Buenos Aires","Trelew",10000,150));
aero[0].getCompañia("Aerolinas Argentinas").insertarVuelo(new Vuelo("FC12","Buenos Aires","Londres",200000,300));
aero[0].getCompañia("fly Bondi").getVuelo("IB20").insertarPasajero(new Pasajeros("Joaquin","20BGHP","Argentina"));
aero[0].getCompañia("fly Bondi").getVuelo("IB20").insertarPasajero(new Pasajeros("Maria","Pjkl20","Argentina"));
aero[0].getCompañia("Aerolinas Argentinas").getVuelo("FC12").insertarPasajero(new Pasajeros("Raul","JHK12","Peruano"));

aero[1] = new Publicos (3000000, "Aeropuerto El Tehuelche", "Puerto Madryn", "Argentina");
aero[1].insertarCompañia(new Compañia("Jet Smart"));
aero[1].insertarCompañia(new Compañia("Lade"));
aero[1].getCompañia("Jet Smart").insertarVuelo(new Vuelo("AE30","Puerto Madryn","Buenos Aires",12000,150));
aero[1].getCompañia("Jet Smart").insertarVuelo(new Vuelo("AE31","Puerto Madryn","Cordoba",9000,150));
aero[1].getCompañia("Lade").insertarVuelo(new Vuelo("HJ51","Puerto Madryn","Eseisa",15000,250));
aero[1].getCompañia("Jet Smart").getVuelo("AE30").insertarPasajero(new Pasajeros("Marcos","4530IB","Argentina"));
aero[1].getCompañia("Jet Smart").getVuelo("AE31").insertarPasajero(new Pasajeros("Mariela","2456OI","Argentina"));
aero[1].getCompañia("Lade").getVuelo("HJ51").insertarPasajero(new Pasajeros("Manuela","124214GH","Peruano"));

aero[2] = new Privado("San Fernando", "San Fernando", "Argentina");
aero[2].insertarCompañia(new Compañia("Copa Airlines"));

aero[2].getCompañia("Copa Airlines").insertarVuelo(new Vuelo("R12","San fernando","Comodoro rivadavia",90000,15));
aero[2].getCompañia("Copa Airlines").insertarVuelo(new Vuelo("E34","San fernando","Neuquen",90000,15));

aero[2].getCompañia("Copa Airlines").getVuelo("R12").insertarPasajero(new Pasajeros("Marcos","42340IB","Argentina"));
aero[2].getCompañia("Copa Airlines").getVuelo("E34").insertarPasajero(new Pasajeros("Mariela","4277OI","Argentina"));

aero[3] = new Privado("ALLEN", "Cordoba", "Argentina");
aero[3].insertarCompañia(new Compañia("Copa Airlines"));

aero[3].getCompañia("Copa Airlines").insertarVuelo(new Vuelo("R120","Cordoba","Comodoro rivadavia",70000,15));
aero[3].getCompañia("Copa Airlines").insertarVuelo(new Vuelo("J34","Cordoba","San fernando",60000,4));

aero[3].getCompañia("Copa Airlines").getVuelo("R120").insertarPasajero(new Pasajeros("Damian","42341735","Argentina"));
aero[3].getCompañia("Copa Airlines").getVuelo("J34").insertarPasajero(new Pasajeros("Martin","42771128","Argentina"));

}

public static void menu(){
int opcion;

do{
System.out.println("\t.:MENU:.");
System.out.println("1. Ver Aeropuertos gestionados (Publico o privados)");
System.out.println("2. Ver empresas(privado) o subvencion(Publicos)");
System.out.println("3. Lista de compañias de un aerpuerto");
System.out.println("4. Lista de vuelos por Compañia");
System.out.println("5. Listar posibles vuelos de Origen a Destino");
System.out.println("6. Salir");
System.out.println("Opcion: ");
opcion = entrada.nextInt();

switch(opcion){
case 1 -> {
System.out.println("");
mostrarDatosAeropuertos(aeropuertos);
break;
}
case 2 -> {
System.out.println("");
mostrarPatrosinio(aeropuertos);
break;


}
case 3 -> {

}
case 4 -> {

}
case 5 -> {

}
case 6 -> {

}
default -> System.out.println("Error opcion no valida...");

}

}while(opcion!=6);
}

public static void mostrarDatosAeropuertos(Aeropuerto aeropuertos[]){

for(int i=0;i<aeropuertos.length;i++){
if(aeropuertos[i] instanceof Privado){
System.out.println("Aeropuerto Privado");
System.out.println("Nombre: "+aeropuertos[i].getNombre());
System.out.println("Ciudad: "+aeropuertos[i].getCiudad());
System.out.println("Pais: "+aeropuertos[i].getPais());
}
else{
System.out.println("Aeropuerto Publico");
System.out.println("Nombre: "+aeropuertos[i].getNombre());
System.out.println("Ciudad: "+aeropuertos[i].getCiudad());
System.out.println("Pais: "+aeropuertos[i].getPais());

}
System.out.println("");
}


}
public static void mostrarPatrosinio(Aeropuerto aeropuertos[]){
String empresas[];

for(int i=0;i<aeropuertos.length;i++){
if(aeropuertos[i] instanceof Privado){
System.out.println("Aeropuerto Privado: "+aeropuertos[i].getNombre());
empresas = ((Privado)aeropuertos[i]).getListaEmpresas();
for(int j=0;j<empresas.length;j++){
System.out.println(empresas[j]);
}
}
else{
System.out.println("Aeropuerto Publico: "+aeropuertos[i].getNombre());
System.out.println("Subvencion: "+((Publicos)aeropuertos[i]).getSubvencio());
}
System.out.println("");
}
}
}

CLASE AEROPUERTO:

package Proyecto_1;

public class Aeropuerto {
private final String nombre;
private final String ciudad;
private final String pais;
private Compañia listaCompañias[] = new Compañia[10];
private int numCompañia;

public Aeropuerto(String nombre, String ciudad, String pais) {
this.nombre = nombre;
this.ciudad = ciudad;
this.pais = pais;
this.numCompañia = 0;
}

public Aeropuerto(String nombre, String ciudad, String pais, Compañia c[]) {
this.nombre = nombre;
this.ciudad = ciudad;
this.pais = pais;
listaCompañias = c;
this.numCompañia = c.length;

}

public void insertarCompañia(Compañia compañia){
listaCompañias[numCompañia] = compañia;
numCompañia++;
}

public String getNombre() {
return nombre;
}

public String getCiudad() {
return ciudad;
}

public String getPais() {
return pais;
}

public Compañia[] getListaCompañias() {
return listaCompañias;
}

public int getNumCompañia() {
return numCompañia;
}

public Compañia getCompañia(int i){
return listaCompañias[i];
}

public Compañia getCompañia(String nombre){
boolean encontrado = false;
int i=0;
Compañia c = null;
while((!encontrado)&&(i<listaCompañias.length)){
if(nombre.equals(listaCompañias[i].getNombre())){
encontrado = true;
c = listaCompañias[i];
}
}
return c;

}

}
CLASE PRIVADO:

package Proyecto_1;

public class Aeropuerto {
private final String nombre;
private final String ciudad;
private final String pais;
private Compañia listaCompañias[] = new Compañia[10];
private int numCompañia;

public Aeropuerto(String nombre, String ciudad, String pais) {
this.nombre = nombre;
this.ciudad = ciudad;
this.pais = pais;
this.numCompañia = 0;
}

public Aeropuerto(String nombre, String ciudad, String pais, Compañia c[]) {
this.nombre = nombre;
this.ciudad = ciudad;
this.pais = pais;
listaCompañias = c;
this.numCompañia = c.length;

}

public void insertarCompañia(Compañia compañia){
listaCompañias[numCompañia] = compañia;
numCompañia++;
}

public String getNombre() {
return nombre;
}

public String getCiudad() {
return ciudad;
}

public String getPais() {
return pais;
}

public Compañia[] getListaCompañias() {
return listaCompañias;
}

public int getNumCompañia() {
return numCompañia;
}

public Compañia getCompañia(int i){
return listaCompañias[i];
}

public Compañia getCompañia(String nombre){
boolean encontrado = false;
int i=0;
Compañia c = null;
while((!encontrado)&&(i<listaCompañias.length)){
if(nombre.equals(listaCompañias[i].getNombre())){
encontrado = true;
c = listaCompañias[i];
}
}
return c;

}

}
CLASE PUBLICO:

package Proyecto_1;

public class Publicos extends Aeropuerto{
private double subvencio;

public Publicos(String nombre, String ciudad, String pais) {
super(nombre, ciudad, pais);
}

public Publicos(double subvencio, String nombre, String ciudad, String pais, Compañia[] c) {
super(nombre, ciudad, pais, c);
this.subvencio = subvencio;
}

public Publicos(double subvencio, String nombre, String ciudad, String pais) {
super(nombre, ciudad, pais);
this.subvencio = subvencio;
}

public double getSubvencio() {
return subvencio;
}

}

Hay mas clases pero no participan en el error
Dejo el proyecto en formato zip



MUCHISIMAS GRACIAS




Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error null

Publicado por Yamil Bracho (17 intervenciones) el 28/11/2022 23:49:05
El problema es que no has inicializado el arreglo en el momento en que ejecutas la opcion del menu.Para ello ejecuta primero insertarDatosAeropuerto() y despues menu() en tu main()

public static void main(String[] args){
insertarDatosAeropuerto(aeropuertos);
menu();
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error null

Publicado por joaquin (5 intervenciones) el 29/11/2022 00:14:34
Cuando pongo
public static void main(String[] args){
insertarDatosAeropuerto(aeropuertos);
menu();
}
con el arreglo primero, en el orden que me dijiste
ya no aparece el menu, se queda ejecutando el programa con la consola en blanco, sin ningún error, pero el menu no se muestra en consola
Captura
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error null

Publicado por Yamil Bracho (17 intervenciones) el 29/11/2022 02:17:28
No te esta mostrando alguna excepcion ?
En el menu se queda esperando por un entero, Dale "1" que es la opcion para mostar el arreglo a ver...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error null

Publicado por Yamil Bracho (17 intervenciones) el 29/11/2022 03:09:11
Esta saliendo despues de insertarDatosAeropuerto() por eso no te muestra el menu.
Si estas usando un iDE como Netbeans o alguno parecido puedes colocar un punto d einterrupcion e ir ejecutando tu programa paso a paso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Error null

Publicado por joaquin (5 intervenciones) el 29/11/2022 15:10:28
Le ejecuto paso a paso con el debug/step into y al momento de llegar al menu() se cierra
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar