Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   PROBLEMAS CON NullPointerException (http://www.forosdelweb.com/f45/problemas-con-nullpointerexception-350452/)

laelcla 16/11/2005 09:38

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

erikantonio 16/11/2005 11:20

tienes que señalar el package.

TolaWare 16/11/2005 22:15

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.