Problem Exception in thread "main" java.lang.NullPointerException [duplicate]

0

If someone could explain to me and tell me how to solve it. I have two classes that I do not know why they do not communicate

class 1:

package practica003;
import java.util.Scanner;

public class PRACTICA003 
{
    public static void main(String[] args) 
    {
        CAgenda primera = new CAgenda ();
        Scanner sc = new Scanner (System.in);

        System.out.println("Bienvenido escoge la opción que necesites");
        System.out.println("   1: Agregar    2: Buscar contacto   3: Cumple años   4: Mostrar agenda");
        int opc =sc.nextInt();
        switch (opc)
                {
            case 1: 
            {
                System.out.println("Porfavor ingresa");
                System.out.println("Nombre:");
                String nombre = sc.next();
                System.out.println("Correo:");
                String correo = sc.next();
                System.out.println("Direccion:");
                String direc =sc.next();
                System.out.println("Cumpleaños (día  mesCompleto)");
                String cumple =sc.next();
                System.out.println("Número telefonico");
                int num =sc.nextInt();
                primera.agregar(nombre, correo, direc, cumple, num);
            }
                break;
            case 2 :
            {
                System.out.println("Porfavor ingresa");
                System.out.println("Nombre:");
                String nombre = sc.next();
                boolean comp = primera.BuscarN(nombre);

                if (comp == true)
                {
                    int pos = primera.encontrado;
                    primera.Mostrar(pos);
                }
                else 
                    System.out.println("El contacto no existe");
            }
                break;
            case 3: 
            {
                System.out.println("Porfavor ingresa");
                System.out.println("Día de hoy (día  mesCompleto):");
                String dia = sc.next();
                boolean comp = primera.BuscarC(dia);

                if (comp == true)
                {
                    int pos = primera.encontrado;
                    primera.Mostrar(pos);
                }
                else 
                    System.out.println("El día de hoy nadie cumple años");
            }
                break;
            case 4: 
            { 
                int n = 0;
                for (n = 1; n < 10; n++)
                {
                    primera.Mostrar(n);
                }
            }
                break;
        }  
    }

}

Class 2:

package practica003;
public class CAgenda 
{
    public  int encontrado = 0;
    CContacto [] conocido = new CContacto [10];
    int n = 0;
//    public agenda()
//    {
//        
//    }
    public void agregar (String pNombre, String pCorreo, String pDirec, String pCumple, int pNumT )
    {
        if (n<10)
        {
            n++;
            conocido[n].set_Nombre (pNombre);
            conocido[n].set_Correo(pCorreo);
            conocido[n].set_Direc (pDirec);
            conocido[n].set_Cumple (pCumple);
            conocido[n].set_NumT(pNumT);
            conocido [n] = new CContacto(pNombre, pCorreo, pDirec, pCumple, pNumT );//instanciamos cada objeto
        }
    }  

    public boolean BuscarN (String pNombre)
    {
        int n=0;
        String comp = " ";
        for (n= 0; n <10; n++)
        {
            comp = conocido[n].get_Nombre();
            encontrado = n;
            if (comp == pNombre)
                break;
        }

        if (comp == pNombre)
        return true ;

        return false;
    }

     public boolean BuscarC (String pCumple)
    {
        int n=0;
        String comp = " ";
        for (n= 0; n <10; n++)
        {
            encontrado = n;
            comp = conocido[n].get_Cumple();
            if (comp == pCumple)
                break;
        }

        if (comp == pCumple)
        return true ;

        return false;
    }
     public void Mostrar (int pPos)
     {
         n = pPos;
         conocido [n].mostrar();
     }
}
    
asked by Kiyita Arenas 12.10.2017 в 02:45
source

1 answer

1

You are not initializing the index instances of the array connocido .

When you access the index n , the first thing you have to do is initialize an instance of type CContacto and then access the methods of the object in the index:

public void agregar (String pNombre, String pCorreo, String pDirec, String pCumple, int pNumT )
    {
        if (n<10)
        {
            n++;
            // ****** iniciamos la instancia del indice n *****
            conocido[n] = new CContacto();

            // accedemos a los metodo del indice n
            conocido[n].set_Nombre (pNombre);
            conocido[n].set_Correo(pCorreo);
            conocido[n].set_Direc (pDirec);
            conocido[n].set_Cumple (pCumple);
            conocido[n].set_NumT(pNumT);
            conocido [n] = new CContacto(pNombre, pCorreo, pDirec, pCumple, pNumT );//instanciamos cada objeto
        }
    }  
    
answered by 12.10.2017 в 14:26