![]() |
PROBLEMAS CON NullPointerException Hola al foro, tengo un problema a la hora de ejecutar mi programa, siempre me sale ese error, podrian ayudarme a solucionarlo?¿, de antemano agradezco la ayuda que me puedan brindar. El cogido es el siguiente: //Clase Calzado package fabrica; /** * * @author laelcla */ public class Calzado { /** Creates a new instance of Calzado */ private String Marca; private double Precio; private int Unidad; public Calzado(String Marca,double Precio,int Unidad) { this.Marca=Marca; this.Precio=Precio; this.Unidad=Unidad; } public void Agregar(int Cant){ Unidad=Unidad+Cant; } public void Quitar(int Cant){ Unidad=Unidad-Cant; } public int Cantidad(){ return Unidad; } } //Clase Sucursal package fabrica; /** * * @author laelcla */ public class Sucursal { /** Creates a new instance of Sucursal */ private String Ciudad; private int IdSucursal; private Calzado [] Calzados; public Sucursal(int IdSucursal,String Ciudad) { this.IdSucursal=IdSucursal; this.Ciudad=Ciudad; Calzados=new Calzado[3]; } public void Vender(int Marca,int Cant){ Calzados[Marca].Quitar(Cant);//--------------------------------->>>>>ERROR } public void Abartecer(int Marca,int Cant){ Calzados[Marca].Agregar(Cant); } public int Total(){ int T=0; for(int i=0;i<Calzados.length;i++) T=T+Calzados[i].Cantidad(); return T; } } //Clase Manufactura package fabrica; /** * * @author laelcla */ public class Manufactura { /** Creates a new instance of Manufactura */ private String Nombre; private Sucursal [] Sucursales; public Manufactura(String Nombre){ this.Nombre=Nombre; Sucursales=new Sucursal[100]; } public int Total(){ int T=0; for(int i=0;i<Sucursales.length;i++) T+=Sucursales[i].Total(); return T; } } //Clase Main package fabrica; /** * * @author laelcla */ public class Main { /** Creates a new instance of Main */ public Main() { } /** * @param args the command line arguments */ public static void main(String[] args) { Manufactura m=new Manufactura("Umbrella Services"); //OBJETOS QUE MANIPULAN A LA CLASE SUCURSAL Sucursal s=new Sucursal(1425461, "Huancayo"); s.Abartecer(0, 45);//------------------------>>>>>>>>ERROR //s.Abartecer(1, 24); //s.Abartecer(2, 45); //s.Vender(0, 5); //OBJETOS QUE MANIPULAN A LA CLASE CALZADO /*Calzado c=new Calzado("rebook", 100, 1); c.Agregar(14); c.Quitar(9);*/ // // TODO code application logic here } } El error que me sale es el siguiente: run: Exception in thread "main" java.lang.NullPointerException at fabrica.Sucursal.Abartecer(Sucursal.java:32) at fabrica.Main.main(Main.java:32) Java Result: 1 , nuevamente gracias por la ayuda que me puedan brindar |
tienes que señalar el package. |
El problema se basa en la clase sucursal. Esta clase tiene el siguiente atributo: private Calzado [] Calzados; el cual has inicializado de la siguiente manera: Calzados=new Calzado[3]; esta inicializacion crea el array Calzados con 3 referencias a objetos Calzado, luego cuando quieres utilizar este array lo haces de la siguiente manera: Calzados[Marca].Quitar(Cant); y aqui se te genera un error muy comun con los arrays: Con la instruccion Calzados[Marca] haces referencia un objeto que nunca se creo, porque lo unico que has creado de clazados es el array de referencias a Calzados, pero nunca creaste los 3 objetos calzado correspondiente a este array, por lo que la solucion es agregar al consturctor de la clase sucursal las siguientes lineas for(int i=0 ; i<Calzados.length ; i++){ [I]Calzados[i] = new Calzado(Marca[i],Precio[i],Unidad); } Marca Precio y Unidad deben ser pasados como parametros al constructor de calzados, Marca[0] contiene la marca del primer calzado Precio[0] contiene el precio del primer calzado Unidad[2] conteneria las unidades del 3 calzado. de esta manera, el array calzados, no apunta mas a objetos que no existen y tu problema deberia haberse solucionado. |
| La zona horaria es GMT -6. Ahora son las 08:03. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.