Solucionado (ver solución)
Solucionado
(ver solución)
4
respuestas

Me da error Null al ejecutar el codigo y tengo tal cual el profe

package ar.com.alura;

import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Optional; import java.util.Set; import Model.Alumno; import Model.Curso;

public class Clase18 {

public static void main(String[] args) {

    Curso curso1 = new Curso("Historia", 30);

    Alumno alumno1 = new Alumno("Luis", "001");
    Alumno alumno2 = new Alumno("Pepito", "002");
    Alumno alumno3 = new Alumno("Juan", "003");
    Alumno alumno4 = new Alumno("Pedro", "004");
    Alumno alumno5 = new Alumno("Gustavo", "005");
    Alumno alumno6 = new Alumno("Marcia", "006");
    Alumno alumno7 = new Alumno("Caludia", "007");

    // Collection<Alumno> listaAlumnos = new HashSet<>();

    curso1.addAlumno(alumno1);
    curso1.addAlumno(alumno2);
    curso1.addAlumno(alumno3);
    curso1.addAlumno(alumno4);
    curso1.addAlumno(alumno5);
    curso1.addAlumno(alumno6);
    curso1.addAlumno(alumno7);

    //curso1.getAlumnos().forEach(alumno -> System.out.println(alumno));

    Optional<Alumno> alumno = curso1.getAlumnos().stream().filter(a -> "003".equalsIgnoreCase(a.getCodigo())).findFirst();

    if(alumno.isPresent()) {
        System.out.println(alumno.get());
    }

    Alumno alumnoMap = curso1.getAlumnoMap().get("003");
    System.out.println(alumnoMap);


}

}

4 respuestas

¡Hola Estudiante!

El error Null que estás obteniendo puede deberse a que la variable "curso1" no está inicializada correctamente. Asegúrate de que la clase "Curso" tiene un constructor que recibe como parámetros el nombre del curso y la cantidad de alumnos, y que el método "addAlumno" agrega correctamente los alumnos a la lista de alumnos del curso.

También verifica que la clase "Alumno" tenga un constructor que recibe como parámetros el nombre del alumno y su código.

Espero que esto te ayude a solucionar el problema. Si necesitas, puedes exhibir el código de las clases Curso y Alumno para que podamos comprender mejor qué ha pasado.

¡Espero haber ayudado y buenos estudios!

Este es es codigo de la clase Curso

package Model;

import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map;

public class Curso { private String nombre; private int tiempo; private List aulaList = new ArrayList<>(); private Collection alumnos = new HashSet<>(); // private Collection alumnos = new LinkedHashSet<>(); private Map<String, Alumno> alumnoMap = new HashMap<>(); // private Map<String, Alumno> alumnoMap = new LinkedHashMap<>();

public Curso(String nombre, int tiempo) {
    super();
    this.nombre = nombre;
    this.tiempo = tiempo;
}

public Curso(String nombre, int tiempo, List<Aula> claseList) {
    this.nombre = nombre;
    this.tiempo = tiempo;
    this.aulaList = claseList;
}

public String getNombre() {
    return nombre;
}

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

public int getTiempo() {
    return tiempo;
}

public void setTiempo(int tiempo) {
    this.tiempo = tiempo;
}

public List<Aula> getAulaList() {
    return Collections.unmodifiableList(aulaList);
}

public void setAulaList(List<Aula> aulaList) {
    this.aulaList = aulaList;
}

public void addAula(Aula clase) {
    this.aulaList.add(clase);
}

public void addAlumno(Alumno alumno) {
    this.alumnos.add(alumno);
    this.alumnoMap.put(alumno.getCodigo(), alumno);
}

public boolean verificarAlumno(Alumno alumno) {
    return this.alumnos.contains(alumno);
}

public Collection<Alumno> getAlumnos() {
    return alumnos;
}

public Map<String, Alumno> getAlumnoMap() {
    return alumnoMap;
}

@Override
public String toString() {
    return this.nombre;
}

}

Y este es el de la clase Alumno: package Model;

public class Alumno { private String nombre; private String codigo;

public Alumno(String nombre, String codigo) {
    this.nombre = nombre;
}

public String getNombre() {
    return nombre;
}

public String getCodigo() {
    return codigo;
}

@Override
public String toString() {
    return this.nombre;
}

@Override
public boolean equals(Object obj) {
    Alumno alumno = (Alumno) obj;
    return this.nombre.equals(alumno.getNombre());
}

@Override
public int hashCode() {
    return this.nombre.hashCode();
}

}

solución!

Hola, estudiante en el constructor de tu clase Alumno, falta asignar la variable codigo. Debería quedar así:

 public Alumno(String nombre, String codigo) {
        this.nombre = nombre;
        this.codigo = codigo;
    }

¡Espero haber ayudado y buenos estudios!

muchas gracias!! no sabia dond estaba mi error, ahi ya anda perfecto!