1

Si pudiera alguien explicarme y decirme como resolverlo. Tengo dos clases que no se por que no se comunican

clase 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;
        }  
    }

}

Clase 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();
     }
}
UselesssCat
  • 3,127
  • 1
  • 18
  • 43
  • 1
    Por favor agrega la excepcion completa. Es importante la pila de llamadas para saber en que linea se produce el error. Tambien te recomiendo que busques otras preguntas con "NullPointerException" en el sitio, ya que es un error bastante común en programadores que están recién aprendiendo – UselesssCat Oct 12 '17 at 00:58
  • si disculpa Exception in thread "main" java.lang.NullPointerException at practica003.CAgenda.agregar(CAgenda.java:17) at practica003.PRACTICA003.main(PRACTICA003.java:29) C:\Users\windows_pc\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 – Kiyita Arenas Oct 12 '17 at 01:50
  • la linea `conocido [n] = new CContacto(...)` va antes de hacer las asignaciones. No puedes asignar valores a un elemento que no existe, debes crear un ejemplar primero. Adicionalmente, las lineas `conocido[n].set_Nombre (pNombre);` son innecesarias si pasa los parametros en el contructor de `CContacto` – UselesssCat Oct 12 '17 at 01:57
  • @gbianchi creo que esta es la pregunta mas duplicada de SO ajajjaja – UselesssCat Oct 12 '17 at 02:11
  • Mira [ask] para que tu pregunta sea mejor recibida. También, aprovecha y haz el [tour] para entender mejor cómo funcionamos y de paso obtener tu primera [medalla](https://es.stackoverflow.com/help/badges)! – gbianchi Oct 12 '17 at 02:29
  • muchas gracias ya lo he entendido – Kiyita Arenas Oct 13 '17 at 08:13

1 Answers1

1

No estas inicializando las instancias de los indices del array connocido.

Cuando accedes al indice n, lo primero que tienes que hacer es inicializar una instancia del tipo CContacto y luego acceder a los métodos del objeto en el indice:

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
        }
    }  
Einer
  • 20,190
  • 2
  • 14
  • 36