Autor Tema: Problema con un Arreglo dentro de otro arreglo Java ejercicio teatro, función  (Leído 5038 veces)

Loperso

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 7
    • Ver Perfil
Hola, Estaba haciendo un programa donde una persona puede Crear un teatro, colocarle nombre, dirección y su cantidad de funciones. Y cada función tendría un nombre hora y precio. Y luego los imprime en pantalla

he podido hacer eso, pero mi problema esta cuando intento hacer que la persona digite el numero de teatros que desea crear y ahí coloque cada uno de los datos anteriores.
Se que es con dos arrays ya hice uno solo me falta el segundo

Mi código lo dividí en 3 Packages diferentes ahí los indico

Package Modelo
Código: [Seleccionar]
public class Funcion {
    private String nombre;
    private int precio;
    private String hora;

    public Funcion(String nombre, int precio, String hora) {
        this.nombre = nombre;
        this.precio = precio;
        this.hora = hora;
    }

    public String getNombre() {
        return nombre;
    }

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

    public int getPrecio() {
        return precio;
    }

    public void setPrecio(int precio) {
        this.precio = precio;
    }

    public String getHora() {
        return hora;
    }

    public void setHora(String hora) {
        this.hora = hora;
    }
   
   
}

Código: [Seleccionar]
public class Teatro {
    private String nombre;
    private  String direccion;
    private Funcion[] funcion;

    public Teatro(String nombre, String direccion,int  numerofuncion) {
        this.nombre = nombre;
        this.direccion = direccion;
        this.funcion =new Funcion[numerofuncion];
    }
    public String getNombre() {
        return nombre;
    }

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

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }
   
    public Funcion[] getFuncion(){
    return funcion;
    }

    public void setFuncion(Funcion[] funcion) {
        this.funcion = funcion;
    }
   
   
    public void AgregarFuncion(Funcion funcioncita){
    for(int i=0;i<funcion.length; i++){
        if(this.funcion[i] == null){
            this.funcion[i] = funcioncita;
            break;
        }
    }
   
    }
   
}

Package Controlador
Código: [Seleccionar]
import java.util.Scanner;
import Modelo.Funcion;
import Modelo.Teatro;


public class Cinemark {
    private Teatro miteatro;
    Scanner dato=new Scanner(System.in);
   
    public void CrearTeatro(){
        String nombre,direccion;
        int nfunciones;
       
        System.out.println("CREAR TEATRO");
        System.out.println("Nombre del teatro: ");
        nombre=dato.next();
        System.out.println("Dirrecion del teatro: ");
        direccion=dato.next();
        System.out.println("Numero de funciones: ");
        nfunciones=dato.nextInt();
       
        miteatro=new Teatro(nombre,direccion,nfunciones);
    }
   
    public  void CrearFuncion(){
        String nombre, hora,nombreteatro;
        int precio;
        System.out.println("CREAR FUNCION");
        System.out.println("Nombre de la funcion:");
        nombre=dato.next();
        System.out.println("Precio de la funcion:");
       precio=dato.nextInt();
        System.out.println("Hora de la funcion:");
        hora=dato.next();

        miteatro.AgregarFuncion(new Funcion(nombre, precio, hora));
    }
           
    public  void ImprimirDatos(){
        System.out.println("Nombre del teatro: "+ miteatro.getNombre());
        System.out.println("Direccion del teatro: " +miteatro.getDireccion());
        System.out.println("\nFunciones");
       
        Funcion[] funcion = miteatro.getFuncion();
       
        for(int i=0;i<funcion.length;i++){
        if(funcion[i]!= null){
            System.out.println("\nNombre: "+ funcion[i].getNombre());
            System.out.println("Hora: "+ funcion[i].getHora());
            System.out.println("Nombre: "+ funcion[i].getPrecio());
        }
       
        }
    }
   
    public void Inicio(){
        int x=0;
        int nteatros;
        System.out.println("Diga cuantos Teatros desea colocar: ");
        nteatros=dato.nextInt();
        //miteatro=new Cine(nteatros);
        do{
        System.out.println("Hola \n seleccione el numero correspondiente a la opcion que necesite:");
        System.out.println("Crear teatro: 1");
        System.out.println("Crear funcion: 2");
        System.out.println("Imprimir: 3");
        System.out.println("Salir: 4");
        x=dato.nextInt();
        switch(x){
            case(1):
            CrearTeatro();
            break;
           
            case(2):
            CrearFuncion();
            break;
           
            case(3):
            ImprimirDatos();
               
            case(4):
            System.exit(0);
            }
       
       
        }
        while(x!=4);
        }
}

Y por ultimo el Package Principal

Código: [Seleccionar]
import Modelo.Funcion;
import Modelo.Teatro;
import Controlador.Cinemark;


public class App {
    public static void main(String[] args) {
    new Cinemark().Inicio();
    }
}

Ahora bien, Se que tendría que cambiar el atributo de la clase Cinemark por
Código: [Seleccionar]
private Teatro[] miteatro;
pero no se como hacer que los datos que ingrese la persona se asignen en un espacio de ese array o por lo menos el contexto es el que me esta confundiendo.

Agradecería la ayuda
« Última modificación: 08 de Octubre 2016, 17:33 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas Loperso

En primer lugar, importante que leas las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 sobre cómo escribir y cómo poner títulos adecuados a los temas.

Posiblemente sea bueno ver todos los conceptos básicos de Java para lo cual tienes a tu disposición el curso básico de Java en la dirección http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Para el problema que has planteado, en mi opinión tendrías que organizar mejor el código.

Las clases que yo veo sería razonable tener serían:

Funcion: representaría una función de un teatro
Teatro: representaría un teatro
ConjuntoDeTeatros: representaría un conjunto o colección de teatros
Clase con el main: se encargaría de contener el menú y dirigir el programa. Aquí el usuario introduciría cuántos teatros quiere crear, y con este dato se crearía un objeto ConjuntoDeTeatros con tantos teatros como hay definido el usuario.

En estos hilos se plantea un ejercicio que puede ser similar, sobre un cine, que quizás te sirva:

https://www.aprenderaprogramar.com/foros/index.php?topic=2400.0
https://www.aprenderaprogramar.com/foros/index.php?topic=2622.0

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".