Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 16-nov-2005, 08:38   #1 (permalink)
laelcla ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2005
Mensajes: 2
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
laelcla está desconectado   Responder Citando
Antiguo 16-nov-2005, 10:20   #2 (permalink)
erikantonio ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2005
Mensajes: 95
tienes que señalar el package.
erikantonio está desconectado   Responder Citando
Antiguo 16-nov-2005, 21:15   #3 (permalink)
Colaborador
TolaWare tiene algunos puntos positivos de karma
 
Avatar de TolaWare
 
Fecha de Ingreso: julio-2005
Mensajes: 4.253
Enviar un mensaje por MSN a TolaWare
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.
TolaWare está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 13:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93