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