0

Estoy intentando crear un método para un ejercicio, el cual debe crear un objeto película, y este método a su vez llama a un método introducir multimedia que es una super clase, pero no se como manejar el objeto que devuelve y pasárselo al constructor de películas.

// MÉTODOS DE CLASE ////////////////////////////////////////////////////////

    /**
     * Método para solicitar y crear los objetos multimedia
     * ======================================================
     * 
     * @return -> Objeto multimedia 
     */
    static Multimedia introducirMultimedia(){

        // Objeto multimedia
        Multimedia multimedia = new Multimedia();

        // Pido titulo
        System.out.print("\nTítulo del archivo multimedia: ");
        entrada.nextLine();
        String titulo = entrada.nextLine();
        multimedia.setTitulo(titulo);

        // Pido autor
        System.out.print("\nAutor del archivo multimedia: ");
        String autor = entrada.nextLine();
        multimedia.setAutor(autor);

        // Pido duración
        System.out.print("\nDuración del archivo multimedia en segundos: ");
        int duración = entrada.nextInt();
        multimedia.setDuracion(duración);

        // Pido formato
        System.out.print("\nFormato del archivo multimedia (0-wav, 1-mp3, 2-midi, 3-avi, 4-mov, 5-mpg, 6-cdAudio, 7-dvd): ");
        Formato formato = new Formato(entrada.nextInt());
        multimedia.setFormato(formato);

        return multimedia;
    }

    /**
     * Método para solicitar una pelicula al usuario
     * =============================================
     */
    static void introducirPeliculas(){

        // Llamamos al metodo para solicitar los datos y crear un objeto multimedia
        Multimedia multimedia = new Multimedia();
        multimedia = introducirMultimedia();

        System.out.print("\nIntroduce el actor principal: ");
        entrada.nextLine();
        String actor = entrada.nextLine();

        System.out.print("\nIntroduce la actriz principal: ");
        String actriz = entrada.nextLine();

        Pelicula pelicula = new Pelicula(actriz, actriz, multimedia);
        System.out.println(pelicula.toString());

    }

Al ejecutar y hacer la prueba con un toString me devuelve el objeto multimedia sin problema, es cuando creo el objeto película, dejo el output entero.

run:

1. Pelicula(Introducir)
2. Capótulo serie infantil(Introducir)
3. Fin
1

Título del archivo multimedia: titulo

Autor del archivo multimedia: autor

Duración del archivo multimedia en segundos: 90

Formato del archivo multimedia (0-wav, 1-mp3, 2-midi, 3-avi, 4-mov, 5-mpg, 6-cdAudio, 7-dvd): 0

Introduce el actor principal: actriz

Introduce la actriz principal: actor

Título: titulo, autor: autor, duración: 90 segundos, formato: wav
Exception in thread "main" java.lang.NullPointerException
    at modelos.Multimedia.toString(Multimedia.java:95)
    at modelos.Pelicula.toString(Pelicula.java:60)
    at app.TVApp.introducirPeliculas(TVApp.java:112)
    at app.TVApp.main(TVApp.java:40)
/Users/Luis/Library/Caches/NetBeans/8.2/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 16 seconds)

Clase película:

/**
 * DEFINICIÓN DE LA CLASE PELICULA
 * ==============================================================================
 *
 * @author LUIS QUESADA ROMERO
 */

// PAQUETE AL QUE PERTENECE
package modelos;

public class Pelicula extends Multimedia{ // INICIO DE LA CLASE PRINCIPAL PELICULA

    // ATRIBUTOS ///////////////////////////////////////////////////////////////
    private String actorPrincipal;
    private String actrizPrincipal;
    private Multimedia multimedia;

    // MÉTODOS CONSTRUCTORES ///////////////////////////////////////////////////

    /**
     * Constructor por defecto
     * ========================
     */
    public Pelicula() {
    }

    /**
     * Constructor con parametros ===========================
     *
     * @param actorPrincipal -> Actor principal
     * @param actrizPrincipal -> Actriz principal
     * @param multimedia -> Objeto multimedia
     */
    public Pelicula(String actorPrincipal, String actrizPrincipal, Multimedia multimedia) {
        this.actorPrincipal = actorPrincipal;
        this.actrizPrincipal = actrizPrincipal;
        this.multimedia = multimedia;
    }




    // MÉTODOS GETTER //////////////////////////////////////////////////////////

    public String getActorPrincipal() {
        return actorPrincipal;
    }

    public String getActrizPrincipal() {
        return actrizPrincipal;
    }

    public Formato getFormato() {
        return multimedia.getFormato();
    }

    // MÉTODO TO STRING ////////////////////////////////////////////////////////

    @Override
    public String toString() {
        return super.toString() + 
                "\nActor principal: " + actorPrincipal +"Actriz principal: " +actrizPrincipal;
    }

    // MÉTODO EQUALS
    /**
     * No creo que sea necesario sobre escribirlo, ya que hereda de multimedia
     * y con esos datos es suficiente para poder saber si es igual o no
     */

} // FIN DE LA CLASE PRINCIPAL PELICULA
Luis Quesada Romero
  • 469
  • 1
  • 4
  • 18
  • Reporte tu pregunta como duplicada. Por favor, verifica la respuesta que esta en esa pregunta, y si tenes algun problema puntual que no se soluciona alli, lo seguimos viendo. – gbianchi Apr 08 '19 at 18:34
  • He estado leyendo todos esos post, pero no veo la solución para mi codigo, por eso necesitaba ver donde esta el error en el codigo – Luis Quesada Romero Apr 08 '19 at 18:36
  • que tiene esta linea? modelos.Multimedia.toString(Multimedia.java:95) – gbianchi Apr 08 '19 at 18:37
  • @Override public String toString() { return "\nTítulo: " + titulo + ", autor: " + autor + ", duración: " + duracion + " segundos, formato: " + formato.getNombre(); } Es justo el override – Luis Quesada Romero Apr 08 '19 at 18:38
  • Eso es lo que deberia haber estado en la pregunta, porque justamente ahi te esta dando el error ;). Ahora, alguno de esos campos es nulos? probaste hacer un debug? – gbianchi Apr 08 '19 at 18:39
  • o es mas, la clase que estas tratando de hacer toString, existe, o es nula? – gbianchi Apr 08 '19 at 18:39
  • Por favor agrega la clase pelicula, con su constructor, sus propiedades y el metodo to string. Pero vas a ver que una de esas variables (y miremos fijamente formato.getNombre) es nula – gbianchi Apr 08 '19 at 18:54
  • Y ahi esta el problema. Tu clase pelicula extiende multimedia (o sea tiene todo lo que tiene multimedia), pero ademas, tiene dentro de ella una propiedad de tipo multimedia??? y cuando hace super, llama al tostring de multimedia, pero no a la propiedad, si no al multimedia del cual extiende, en la cual muchas de esas propiedades, seguro son null ;) – gbianchi Apr 08 '19 at 19:04
  • y como puedo solucionarlo, mediante los setter? – Luis Quesada Romero Apr 08 '19 at 19:05
  • La verdad, no se que intentas hacer. Mezclaste dos conceptos en una sola clase. O tu clase extiende de multimedia (y por lo tanto, tiene todas las propiedades publicas que tiene ella) o si no, tenes una propiedad multimedia, pero no extendes de ella. – gbianchi Apr 08 '19 at 19:08
  • Y si hubieras debugueado tu codigo, hubieras visto que el problema es justamente ese, una variable es null. – gbianchi Apr 08 '19 at 19:09
  • [Continuemos el debate en el chat](https://chat.stackexchange.com/rooms/92161/discussion-between-luis-quesada-romero-and-gbianchi). – Luis Quesada Romero Apr 08 '19 at 19:09

0 Answers0