Programación General > Java

 Tengo un problema con un programa que hice

(1/1)

madafauk:

--- Código: Text ---import java.io.*; public class Ejercicio40 {            public static void main (String[] args) throws Exception{                        int planta;        int habitacion=0;                       boolean[][] ocupada = new boolean [6][];        ocupada[0]=new boolean [100];        ocupada[1]=new boolean [100];        ocupada[2]=new boolean [100];        ocupada[3]=new boolean [100];        ocupada[4]=new boolean [100];        ocupada[5]=new boolean [40];                 String[][] nombre = new String [6][];        nombre[0]=new String [100];        nombre[1]=new String[100];        nombre[2]=new String [100];        nombre[3]=new String [100];        nombre[4]=new String [100];        nombre[5]=new String [40];                        InputStreamReader isr1 = new InputStreamReader(System.in);        BufferedReader br1 = new BufferedReader(isr1);                      System.out.println("Elija una de las siguientes opciones:");        System.out.println("1- Hacer una reserva");        System.out.println("2- Borrar una reserva");        System.out.println("3- Hacer una consulta");        System.out.println("4- Salir de la aplicacion");                planta = planta = Integer.parseInt(br1.readLine());        switch(planta) {        case 1:             System.out.println("Introduzca la planta: ");            planta = Integer.parseInt(br1.readLine());            if(planta > ocupada.length && planta > 0) {                System.out.println ("Numero de planta incorrecto");                Ejercicio40.main(args);            }            else {                System.out.println("Introduzca la habitacion: ");                habitacion = Integer.parseInt(br1.readLine());                if(habitacion>ocupada[planta-1].length && habitacion > 0) {                    System.out.println("Numero de habitacion incorrecto");                    Ejercicio40.main(args);                }                            }                        if(ocupada[planta-1][habitacion-1]){                System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);            }            else {                System.out.println("La habitacion esta vacia. Escriba el nombre de la persona que va a ocuparla:");                String temp=br1.readLine();                nombre[planta-1][habitacion-1] = temp;                ocupada[planta-1][habitacion-1]=true;                System.out.println("La reserva se ha realizado");                Ejercicio40.main(args);            }            break;        case 2:            System.out.println("Introduzca la planta: ");            planta = Integer.parseInt(br1.readLine());            if(planta > ocupada.length && planta > 0) {                System.out.println ("Numero de planta incorrecto");                Ejercicio40.main(args);            }            else {                System.out.println("Introduzca la habitacion: ");                habitacion = Integer.parseInt(br1.readLine());                if(habitacion>ocupada[planta-1].length && habitacion > 0) {                    System.out.println("Numero de habitacion incorrecto");                    Ejercicio40.main(args);                }                            }                        if(ocupada[planta-1][habitacion-1]){                System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);                nombre[planta-1][habitacion-1] = null;                ocupada[planta-1][habitacion-1]=false;                System.out.println("La reserva se ha borrado con exito");            }            break;        case 3:            System.out.println("Introduzca la planta: ");            planta = Integer.parseInt(br1.readLine());            if(planta > ocupada.length && planta > 0) {                System.out.println ("Numero de planta incorrecto");                Ejercicio40.main(args);            }            else {                System.out.println("Introduzca la habitacion: ");                habitacion = Integer.parseInt(br1.readLine());                if(habitacion>ocupada[planta-1].length && habitacion > 0) {                    System.out.println("Numero de habitacion incorrecto");                    Ejercicio40.main(args);                }                            }                        if(ocupada[planta-1][habitacion-1]){                System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);            }            else {                System.out.println("La habitacion esta vacia");            }            break;        case 4:            System.exit(0);        default:            System.out.println("Opción incorrecta. Elija otra opcion");            Ejercicio40.main(args);            break;              }    }}  
mi consulta es como puedo sacar los dos arrays fuera del metodo main???

Es para que cuando introduzca un nombre por teclado se quede guardado en el array(nombre) y en el otro array(ocupada), sea true(opcion ocupada la habitacion) y asi cuando se resete el metodo main permanezca guardado en los arrays.
Se que leeyendolo de un archivo seria mas facil pero me lo piden asi.

gracias.

shadow_rev:
Muy simple. Declara los arrays fuera del método main:


--- Código: Java ---//...public boolean[][] ocupada = new boolean [6][];ocupada[0]=new boolean [100];ocupada[1]=new boolean [100];ocupada[2]=new boolean [100];ocupada[3]=new boolean [100];ocupada[4]=new boolean [100];ocupada[5]=new boolean [40];public String[][] nombre = new String [6][];nombre[0]=new String [100];nombre[1]=new String[100];nombre[2]=new String [100];nombre[3]=new String [100];nombre[4]=new String [100];nombre[5]=new String [40]; public static void main(String[] args) throws Exception {  Ejercicio40 ejercicio = new Ejercicio40();  // ...  }  
Cuando vayas a asignar una variable, por ejemplo nombre[0][10], le antepones el nombre del objeto (ejercicio.nombre[0][10]), y cuando llames al main, lo haces de la misma forma (ejercicio.main(args) en vez de Ejercicio40.main()). En teoría debería funcionar; nunca me he visto en la necesidad de llamar al main explícitamente.

:suerte:

madafauk:
gracias pero al final discurri una forma mejor que ha sido crear un bucle while con una condicion que siempre se cumple y por tanto no se me reinicia el main, entonces consigo lo que quiero, de todas formas muchas gracias.

shadow_rev:

--- Cita de: "madafauk" ---gracias pero al final discurri una forma mejor que ha sido crear un bucle while con una condicion que siempre se cumple (...)
--- Fin de la cita ---
Ya me estaba preguntando para qué !@*& llamabas nuevamente al main()  :devil:

Bien por tí por haber dado con esa solución  :good:

Navegación

[0] Índice de Mensajes

Ir a la versión completa