Ayuda por favor java.lang.NullPointerException

Iniciado por TheZeck, 1 Mayo 2017, 18:04 PM

0 Miembros y 1 Visitante están viendo este tema.

TheZeck

Buenas, estaba haciendo este código y me saltó este error, alguno sabe a que se debe?, desde ya no es la primera vez que me pasa. Otras veces me ocurrió lo mismo pero tuve que remover todo el código, ver ese error y no saber porque pasa me saca de quicio, no puedo seguir avanzando en el ejercicio si no logro solucionar eso xD. El ejercicio es este:

Generar una lista de teléfonos. La lista debe ser un objeto que encapsula la matriz de objetos persona, la clase CPersona define los atributos privados nombre, dirección, teléfono relativos a una persona, métodos respectivos que en un menú de opciones permita: añadir, eliminar y buscar en una lista.

El error que me sale es este: Exception in thread "main" java.lang.NullPointerException

gracias de antemano por la ayuda. 


Código (java) [Seleccionar]

public class CPersona {

private String nombre, telefono, direccion;

public CPersona(String nombre,String telefono, String direccion){
this.nombre = nombre;
this.telefono = telefono;
this.direccion = direccion;
}

public void setNombre(String nombre){
this.nombre = nombre;
}

public void setTelefono(String telefono){
this.telefono = telefono;
}

public void setDireccion(String direccion){
this.direccion = direccion;
}

public String getNombre(){
return nombre;
}

public String getTelefono(){
return telefono;
}

public String getDireccion(){
return direccion;
}

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

Código (java) [Seleccionar]
import java.util.Scanner;

public class Lista {
private CPersona[] persona;
private static int cantidad;

Lista(){
persona = new CPersona[1000];
cantidad = 0;
}

public void anadir(Scanner tecla){
String nombre, telefono, direccion;

System.out.println("Ingrese nombre: ");
System.out.println("Ingrese telefono: ");
System.out.println("Ingrese direccion: ");

nombre = tecla.nextLine();
telefono = tecla.nextLine();
direccion = tecla.nextLine();

if(cantidad == 0){
persona[cantidad].setNombre(nombre);
persona[cantidad].setTelefono(telefono);
persona[cantidad].setDireccion(direccion);
cantidad++;
}

boolean entrar = true;
if(cantidad != 0){
for(int i = 0 ; i < cantidad; i++)
if(persona[i].getTelefono().equals(telefono))
entrar = false;

if(entrar){
persona[cantidad].setNombre(nombre);
persona[cantidad].setTelefono(telefono);
persona[cantidad].setDireccion(direccion);
cantidad++;
}else{
System.out.println("Este numero ya existe en la lista");
}

}

}


public void eliminar(Scanner tecla){
int posicion = buscar(tecla);

}



public int buscar(Scanner tecla){

int pos = 0;
String telefono;
System.out.println("Ingrese telefono: ");
telefono = tecla.nextLine();

do{
pos++;
}while(pos < cantidad && persona[pos].getTelefono().equals(telefono) == false);

if(persona[pos].getTelefono().equals(telefono)){
return pos;
}else{
return -1;
}
}


public static void main(String[] args) {
// TODO Auto-generated method stub
Lista registro = new Lista();

Scanner tecla = new Scanner(System.in);
int rpta;
int opcion;

do{
System.out.println("1. Añadir: ");
System.out.println("2. Eliminar: ");
System.out.println("3. Buscar: ");

opcion = tecla.nextInt();

switch(opcion){
case 1:{
registro.anadir(tecla);
break;
}
case 2:{
registro.eliminar(tecla);
break;
}
case 3:{
registro.buscar(tecla);
break;
}
}


System.out.print("Mostrar las opciones de nuevo 1)si/2)no: ");
rpta = tecla.nextInt();
}while(rpta == 1);

}

}





HardC0d3

#1
Buenas, no se si lo habrás arreglado ya pero no estás instanciando los objetos de cada posición del vector persona, por eso te salta NullPointerException. Y otra cosa, ¿por qué tienes un método main vacío en la clase CPersona?

Un saludo.