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
Ir a la versión completa