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

Error NullPointerException... Ayuda Plis!!

Estas en el tema de Error NullPointerException... Ayuda Plis!! en el foro de Java en Foros del Web. Hola chicos... estoy haciendo un programa que suma y multiplica polinomios pero me da un nullpointerexception cuando compilo en el principal en la linea 15 ...
  #1 (permalink)  
Antiguo 30/01/2008, 17:48
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 0
Error NullPointerException... Ayuda Plis!!

Hola chicos... estoy haciendo un programa que suma y multiplica polinomios pero me da un nullpointerexception cuando compilo en el principal en la linea 15 que no se como arreglar.. os pego el cdigo a ver si veis algo que yo no veo porque soy novatilla con java y aun se me escapan cosas ;)

public class Principal {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Polinomio A = null;
Polinomio B = null;
String opcion=null;
int op=0;

A.Asignar(3, 2);
A.Asignar(1, 4);
A.Asignar(0, 2);
A.Mostrar();
B.Asignar(4, 3);
B.Asignar(3, 1);
B.Asignar(1, 5);
B.Mostrar();

BufferedReader entrada = new BufferedReader (new InputStreamReader(System.in));
System.out.println("Bienvenido al Polinomio");
System.out.println("*************************");
System.out.println("Elija una opción");
System.out.println("1.- Modificar el polinomio A");
System.out.println("2.- Modificar el polinomio B");
System.out.println("3.- Sumar los polonomios");
System.out.println("4.- Multiplicar los polinomios");

try {
opcion = entrada.readLine();
}catch (IOException e){
System.out.println ("Error");

}
op = Integer.parseInt(opcion);

switch (op){
case 1:
System.out.println("Dame el grado");
int g;
String grado=null;
try {
grado = entrada.readLine();
}catch (IOException e){
System.out.println ("Error");

}
g = Integer.parseInt(grado);
System.out.println("Dame el coeficiente");
int c;
String coe=null;
try {
coe = entrada.readLine();
}catch (IOException e){
System.out.println ("Error");

}
c = Integer.parseInt(coe);
A.Asignar(g, c);
A.Mostrar();
break;
case 2:
String grad = null;
System.out.println("Dame el grado");
try {
grad = entrada.readLine();
}catch (IOException e){
System.out.println ("Error");

}

g = Integer.parseInt(grad);
System.out.println("Dame el coeficiente");
String co=null;
try {
co = entrada.readLine();
}catch (IOException e){
System.out.println ("Error");

}
c = Integer.parseInt(co);
B.Asignar(g, c);
B.Mostrar();
break;
case 3:
Polinomio P=null;
P=A.Suma(B);
P.Mostrar();
break;
case 4:
P=A.Producto(B);
P.Mostrar();
break;
}
}
}

Muchas gracias por anticipado!!
  #2 (permalink)  
Antiguo 30/01/2008, 17:56
Avatar de victor666  
Fecha de Ingreso: junio-2007
Mensajes: 39
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

sencillo, lo que veo es que estas usando objetos que aun no has instanciado, me esplico estas usando por ejemplo en metodo Asignar() pero el elemento A lo inicializaste en null, debes contruirlo de la sigiente forma Polinomio A = new Polinomio(); para que puedas acceder a su metodos...

saludos!!!
  #3 (permalink)  
Antiguo 31/01/2008, 08:19
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

cierto, tenias razon, corregi eso y el NullPointerException se ha quitado pero ahora me han salido estos:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Polinomio.Asignar(Polinomio.java:64)
at Principal.main(Principal.java:23)


que no se que significa, imagino que tendra que ver con algo del array
  #4 (permalink)  
Antiguo 31/01/2008, 08:32
 
Fecha de Ingreso: enero-2008
Mensajes: 203
Antigüedad: 16 años, 3 meses
Puntos: 1
Re: Error NullPointerException... Ayuda Plis!!

efectivamente, cuando ocurre ese error es por un error con el tamaño del array... revisa el codigo, intenta compilar paso a paso, para q veas donde te extralimitas mas facil
  #5 (permalink)  
Antiguo 31/01/2008, 08:40
Avatar de GhostGirl  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

muy cierto, el error se debe a que estás accediendo a la posición 2 del arreglo y esa posición no existe ... debes recordar que en Java los índices de los elementos comienzan en la posición 0 ... independiente de si usas los típicos arreglos estáticos o estás manejando la colección de elementos s través de un ArrayList ...

Bye
  #6 (permalink)  
Antiguo 31/01/2008, 09:30
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

vamos a ver pk me estoy perdiendo,... se supone ke el constructor me crea el array vacio.... (o al menos eso he pretendido ke hiciera jejeje) y en el metodo asignar lo que hago es que voy asignando el grado y el valor del exponente y el coeficiente... metodo al cual llama el principal.. asi ke si me sale ese error tan raaaaro sera pk peta el metodo asignar... pero le estoy viendo y se supone ke va asignando posicion por posicion...

public void Asignar (int i, int valor) {
//redimensionamos el array para hacerle hueco al nuevo elemento del polinomio
exponente= new int [exponente.length+1];
coeficiente = new int [coeficiente.length+1];
int j;
//System.out.println(i);
if (i>grado){// si el grado esta al principio del array
for ( j=exponente.length; j==0;j--){//corremos todos los elementos 1 hueco hacia la izquierda
exponente[j]=exponente[j-1];
coeficiente[j]=coeficiente[j-1];
}

exponente[0]=i;//hacemos que el exponente que haya en la posicion 0 sea igual a i
coeficiente[0]=valor;// y asignamos el coeficiente en la posicion 0 a valor

grado=i; //de este modo i es el nuevo grado del polinomio
tam++;

}else{
if (i==0) { // si el grado esta al final del array
exponente[exponente.length]=i;// asignamos el exponente que haya en la ultima posicion a i
coeficiente[coeficiente.length]=valor;// y el coeficiente que haya en la ultima posicion a valor

tam++;
}else{
for (j=exponente.length;exponente[j]>i;j--){
exponente[j]=exponente[j-1];
coeficiente[j]=coeficiente[j-1];
}
exponente[j]=i;
coeficiente[j]=valor;

tam++;
}

}
}


vaya con el programita... pero muchas gracias a todos por la ayuda!!!
  #7 (permalink)  
Antiguo 01/02/2008, 09:35
Avatar de GhostGirl  
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

Hola de nuevo!!!

Insisto en que debes considerar las posiciones ... veo que estás redimensionando los arreglos .. y lo que creo que puede pasar es lo siguiente:

Imagina que tu arreglo tiene: [ 3 - 4 - 5] es decir el valor de su atributo length es 3 ... el rango de índicees va del 0 al 2

Ahora supongamos que lo redimensionamos ... ahora ahí tienes un problema porque vas a perder los valores que ya tenias ... dado que creas un nuevo objeto al hacer el new int[exponente.length + 1] ... se supone que con eso creas otro objeto, por ende exponente va a apuntar a una nueva referencia ... ojo con eso!!! ... mira este ejemplo:

public class Ejemplo
{
public static void main(String args[])
{
int i, arreglo[] = new int[4];

/* Llenamos el arreglo */
for(i=0; i < arreglo.length; i++) arreglo[i] = (i+1);

/* Mostramos el arreglo */
System.out.println("Antes de la redimension ...");
for(i=0; i < arreglo.length; i++) System.out.println(arreglo[i]);

/* Redimensiona el arreglo */
arreglo = new int[arreglo.length+1];

/* Mostramos el arreglo */
System.out.println("Despues de la redimension ...");
for(i=0; i < arreglo.length; i++) System.out.println(arreglo[i]);
}
}

Siguiendo ... ahora tu arreglo quedaría: [ 0 - 0 - 0 - 0 ] ahora .. suponiendo que vas a rreglar el detallito anterior ... ahora tu arreglo tiene 4 elementos y sus índices van del 0 al 3 y tú en una de las instrucciones estás tratando de acceder a la posición arreglo.length ... o sea lla 4 en el caso de este ejemplo y esa NO EXISTE!!!! por eso te marca ese error ...

Te insito, revisa bien el tema del manejo de los índices de tus arreglos

Que estes bien
Saludos

Bye
  #8 (permalink)  
Antiguo 01/02/2008, 14:27
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Error NullPointerException... Ayuda Plis!!

Ya lo pille.... pero eso tambien se puede controlar con una excepcion, no?? Lo digo porque lo que hice fue capturar la excepcion en la linea donde me marcaba el error, y ahora el programa no tiene errores. Bueno no tiene errores, rojo relativo, porque a la hora de las pruebas hace cosas raras. Tengo una opcion del menu que es modificar el polinomio A, tu le metes el grado y el coeficiente y se supone que te modifica el polinomio que tu tenias, pero aqui le metas lo que le metas te sale 32, lo he revisado y debugado y me he fijado en el debuger que hay una variable con un id=32 que es justo lo que me sale a mi y poniendole los breakpoints he llegado a un punto en el modulo asignar que no me lo hace bien ... pero ***** pk no!!!!???
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




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