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.
public class CPersona {
private String nombre, telefono, 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;
}
return nombre;
}
return telefono;
}
return direccion;
}
public static void main
(String[] args
) { // TODO Auto-generated method stub
}
}
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;
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);
}
}
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.