Foro de elhacker.net

Programación => Java => Mensaje iniciado por: KLuffy en 18 Junio 2012, 22:49 pm



Título: ERROR JAVA NEAT BEANS
Publicado por: KLuffy en 18 Junio 2012, 22:49 pm
Que tal, les explico que hace mi programa, basicamente guarda los 10 numeros con absisa menor introducidos por el usuario, el problema es que me marca un error al querer asignar una nueva variable del tipo de una clase anterior, el error es:

Exception in thread "main" java.lang.NullPointerException
   at arreglo.ArregloPuntos.agregarPunto(ArregloPuntos.java:29)
   at arreglo.Principal.main(Principal.java:36)


el problema me lo marca en la siguiente instrucción
puntos = p;

les dejo todo el codigo espero me puedan ayudar:
****************Clase Arreglo punto*************************
package arreglo;
import geometria.Punto; //Se importa la clase Punto a la libreria

public class ArregloPuntos extends Punto{
    private Punto puntos[];
    private int numPuntos;
    private int i;
   
    public ArregloPuntos(){
        numPuntos = 0;
        i = 0;
        puntos = null;
    }
    //se agrega Punto
    public void agregarPunto(Punto p){
        if (numPuntos == 10){
            if (p.obtenX()>puntos[numPuntos-1].obtenX())
                return;
        }
        else
            numPuntos++; //incrementa el valor de numpuntos = 1 (primer corrida)
        i = numPuntos-1; // da el valor de i = 0
        for( ;(i>1)&&(p.obtenX()<puntos[i-1].obtenX());i--){
            puntos = puntos[i-1];
        }
        puntos = p;
        //System.out.println("p1 es "+ puntos.distancia(p));
    }
    public void eliminar(int i) throws IndexOutOfBoundsException{
        if((i<1)||(i>numPuntos))
            throw new IndexOutOfBoundsException("Indice Invalido: "+i);
        Punto pu = puntos[i-1]; //nos deja definirlo sin new
        for(int j=i; j<numPuntos; j++)
            puntos[j-1] = puntos[j];
        puntos[numPuntos-1]=null;
        numPuntos--;
    }
}
****************Clase Punto************************
package geometria;

/**
 * Se genera la clase Punto
 */
public class Punto {
    public double x; //se usa protected para que los miembros sean accesibles
    public double y; //desde cualquier subclase de punto (en este caso p1 y p2 de linea
                        // tambien se pudo usar public pero es riesgoso ya que todos tendran acceso
    //Constructor por omisión
    public Punto(){
        x=y=0;
    }
    public Punto (double x, double y){
        this.x = x;
        this.y = y;
    }
    //Se genera un constructor de copia, el nuevo objeto que se crea copia el
    //estado que gusrda el parametro que le estoyt pasando del objeto original
    public Punto(Punto p){
        x = p.x;
        y = p.y;
    }
    //Se obtienen los valores de los puntos X y Y
    public double obtenX(){
        return x;
    }
    public double obtenY(){
        return y;
    }
    public void asignaX(double x){
        this.x = x;
    }
    public void asignaY(double y){
        this.y = y;
    }
    public void asignaPunto(double x, double y){
        this.x = x;
        this.y = y;
    }
    public void asignaPunto (Punto p){
        this.x = p.obtenX(); // x = p.x;
        this.y = p.obtenY(); // y = p.y;
    }
    public double distancia(Punto p){
        return Math.sqrt((x-p.x)*(x-p.x) + Math.pow(y-p.y, 2));
    }
    public boolean colineales (Punto p1, Punto p2){
        return (y - p1.y)*(p2.x - p1.x) == (p2.y - p1.y)*(x-p1.x);
    }
    public String toString(){
        return "(" + x + "," + y + ")";
    }
    public boolean equals(Object obj){
        Punto punto = (Punto) obj;
     return x==punto.x && y==punto.y;   
    }
}

*****
Pd el programa ya se entrego pero no puedo dormir en las noches, por que no esta resuelto jajaja


Título: Re: ERROR JAVA NEAT BEANS
Publicado por: KLuffy en 18 Junio 2012, 23:09 pm
jajaja que oso ya arregle mi problema y esra bastante estupido, aun asi pongo la respuesta por si a alguien le pasa

no habia creado el arreglo, solo habia hecho la referencia al arreglo la linea que me faltaba era la siguiente dentro del metodo que llamaba a mi arreglo

puntos = new Punto[10];

y eso era todo ustedes disculpen jajaja ;D