Foros del Web » Programación para mayores de 30 ;) » Java »

PROBLEMAS CON NullPointerException

Estas en el tema de PROBLEMAS CON NullPointerException en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/11/2005, 09:38
 
Fecha de Ingreso: noviembre-2005
Mensajes: 2
Antigüedad: 18 años, 5 meses
Puntos: 0
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
  #2 (permalink)  
Antiguo 16/11/2005, 11:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 95
Antigüedad: 18 años, 8 meses
Puntos: 0
tienes que señalar el package.
  #3 (permalink)  
Antiguo 16/11/2005, 22:15
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
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.
__________________
http://blog.tolaware.com.ar -> Blog de Java, Ruby y Linux
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:29.