0

Estoy realizando un proyecto de estructuras de datos en el cual se crean procesos, actividades y tareas al agregar una actividad a una ListaDoble el constructor de la super clase tiene en ella una cola tareas que quiere decir al crear una actividad esta agregara Tareas a una cola que haran parte de la actividad una imagen como guia (El problema dudo que sea que la cola no exista ya que en el metodo de agregarActividad encolo las tareas:

introducir la descripción de la imagen aquí

Ahora mi clase Actividad en código lo demas que hacen parte de ella son simples Setters y getters:

public class Actividad {

public int id = 0;
public String nombre = "";
public String descripcion = "";
public boolean obligatorio = true;
Cola<Tarea> colaTareas = new Cola<Tarea>();

public Actividad(int id, String nombre, String descripcion, boolean obligatorio) {
    super();
    this.id = id;
    this.nombre = nombre;
    this.descripcion = descripcion;
    this.obligatorio = obligatorio;
    colaTareas = new Cola<Tarea>();
}

public Actividad() {

}

Ahora el metodo que se encuentra en mi clase controladora desde donde se maneja la informacion involucrada con la interfaz (JAVAFX):

 public void agregarActividad() {

    int idActividad;
    String nombreActividad, descripcionActivi;
    boolean obligatorioActi = false;

    idActividad = Integer.parseInt(ID_ACTIVIDAD.getText());
    nombreActividad = Nombre_Actividad.getText();
    descripcionActivi = Descripcion_Actividad.getText();

    if (comboObligatoria_Actividad.getSelectionModel().getSelectedItem().toString().equalsIgnoreCase("Si"))
        obligatorioActi = true;
    if (comboObligatoria_Actividad.getSelectionModel().getSelectedItem().toString().equalsIgnoreCase("No"))
        obligatorioActi = false;

    modelFactoryController.getMiPrincipal().agregarActividad(idActividad, nombreActividad, descripcionActivi,
            obligatorioActi);

    Actividad act = new Actividad(idActividad, nombreActividad, descripcionActivi, obligatorioActi);
    NodoDoble<Actividad> guia = modelFactoryController.getMiPrincipal().getListaActividades().buscarNodo(act);
    Nodo<Actividad> nodo = new Nodo<Actividad>(act);

    for (Tarea tarea : arrayTareasSeleccionadas) {
        nodo.getValorNodo().getColaTareas().encolar(tarea);
    }

    JOptionPane.showMessageDialog(null, "ACTIVIDAD AGREGADA!");
    limpiarCamposActividades();
    arrayTareasSeleccionadas.clear();
    observableAuxSeleccionadas.clear();
    actualizarTabla();
}

Ahora mi metodo de agregarActividad en mi ModelFactoryController de el patron singleton:

public void agregarActividad(int id, String nombre, String descripcion, boolean obligatorio) {
    listaActividades.agregarInicio(new Actividad(id, nombre, descripcion, obligatorio));
    System.out.println("ACTIVIDAD AGREGADA");
}

// Agregar al inicio de la lista
public void agregarInicio(T valorNodo) {

    NodoDoble<T> nuevoNodo = new NodoDoble<>(valorNodo);

    if (estaVacia()) {
        nodoPrimero = nodoUltimo = nuevoNodo;
    } else {
        nuevoNodo.setSiguienteNodo(nodoPrimero);
        nodoPrimero = nuevoNodo;
    }
    tamanio++;
}

El problema empieza cuando quiero listar el nombre de las tareas de la cola que hacen parte de el Item (Actividad) seleccionada, aqui una imagen de guia y metodo:

introducir la descripción de la imagen aquí introducir la descripción de la imagen aquí

    public void listarTareasColas() {

    int idActividad = tablaActividades.getSelectionModel().getSelectedItem().getId();
    String nombreActividad = tablaActividades.getSelectionModel().getSelectedItem().getNombre();
    String descripcionActivi = tablaActividades.getSelectionModel().getSelectedItem().getDescripcion();
    boolean obligatorioActi = tablaActividades.getSelectionModel().getSelectedItem().isObligatorio();
    
    
    String info = "Los ID y nombres que hay en la cola son: \n";
    Actividad index = new Actividad(idActividad, nombreActividad, descripcionActivi, obligatorioActi);
    System.out.println("NOMBRE ACTIVIDAD SELECCIONADA" + index.getNombre().toString());

    NodoDoble<Actividad> nododoble = modelFactoryController.getMiPrincipal().getListaActividades()
            .buscarNodo(index);

    System.out.println(cola.mostrarCola(nododoble.getValorNodo().getColaTareas()));
    
    System.out.println();

    
    System.out.println(info);

    JOptionPane.showMessageDialog(null, info);

}


/**
 * Devuelve un nodo que contenga un dato específico
 * 
 * @param dato Dato a buscar
 * @return Nodo
 */
public NodoDoble<T> buscarNodo(T dato) {

    NodoDoble<T> aux = nodoPrimero;

    while (aux != null) {
        if (aux.getValorNodo().equals(dato)) {
            return aux;
        }
        aux = aux.getSiguienteNodo();
    }

    return aux;
}

public String mostrarCola(Cola<T> cola) {
    String info = "";

    while (nodoPrimero != null) {
        info += nodoPrimero.getValorNodo();
        nodoPrimero = nodoPrimero.getSiguienteNodo();
    }

    return info;
}
  • El error es un NullPointerException? porque venias bien, y despues empezaste con las imagenes y me perdi.. igual, si es NPE, voy a tener que cerrar tu pregunta como duplicada – gbianchi Apr 22 '21 at 04:49
  • Alguno de tus objetos es null. Debug y a mirar linea por linea a ver cual es nulo... – gbianchi Apr 22 '21 at 04:54
  • Amigo el problema es que dudo que el problema sea NullPointerException en cola ya que las tareas fueron encoladas – Santiago Poveda Garcia Apr 22 '21 at 04:54
  • el error dice que es null pointer, entonces es null pointer.. no hay con que discutirle al compilador... – gbianchi Apr 22 '21 at 04:57

0 Answers0