• Domingo 22 de Diciembre de 2024, 17:50

Autor Tema:  Tengo un problema con un programa que hice  (Leído 1318 veces)

madafauk

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Tengo un problema con un programa que hice
« en: Viernes 14 de Noviembre de 2008, 18:49 »
0
Código: Text
  1. import java.io.*;
  2.  
  3. public class Ejercicio40 {
  4.    
  5.    
  6.     public static void main (String[] args) throws Exception{
  7.                
  8.         int planta;
  9.         int habitacion=0;      
  10.        
  11.         boolean[][] ocupada = new boolean [6][];
  12.         ocupada[0]=new boolean [100];
  13.         ocupada[1]=new boolean [100];
  14.         ocupada[2]=new boolean [100];
  15.         ocupada[3]=new boolean [100];
  16.         ocupada[4]=new boolean [100];
  17.         ocupada[5]=new boolean [40];
  18.        
  19.  
  20.         String[][] nombre = new String [6][];
  21.         nombre[0]=new String [100];
  22.         nombre[1]=new String[100];
  23.         nombre[2]=new String [100];
  24.         nombre[3]=new String [100];
  25.         nombre[4]=new String [100];
  26.         nombre[5]=new String [40];
  27.        
  28.        
  29.         InputStreamReader isr1 = new InputStreamReader(System.in);
  30.         BufferedReader br1 = new BufferedReader(isr1);      
  31.        
  32.         System.out.println("Elija una de las siguientes opciones:");
  33.         System.out.println("1- Hacer una reserva");
  34.         System.out.println("2- Borrar una reserva");
  35.         System.out.println("3- Hacer una consulta");
  36.         System.out.println("4- Salir de la aplicacion");
  37.        
  38.         planta = planta = Integer.parseInt(br1.readLine());
  39.         switch(planta) {
  40.         case 1:
  41.             System.out.println("Introduzca la planta: ");
  42.             planta = Integer.parseInt(br1.readLine());
  43.             if(planta > ocupada.length && planta > 0) {
  44.                 System.out.println ("Numero de planta incorrecto");
  45.                 Ejercicio40.main(args);
  46.             }
  47.             else {
  48.                 System.out.println("Introduzca la habitacion: ");
  49.                 habitacion = Integer.parseInt(br1.readLine());
  50.                 if(habitacion>ocupada[planta-1].length && habitacion > 0) {
  51.                     System.out.println("Numero de habitacion incorrecto");
  52.                     Ejercicio40.main(args);
  53.                 }
  54.                
  55.             }
  56.            
  57.             if(ocupada[planta-1][habitacion-1]){
  58.                 System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);
  59.             }
  60.             else {
  61.                 System.out.println("La habitacion esta vacia. Escriba el nombre de la persona que va a ocuparla:");
  62.                 String temp=br1.readLine();
  63.                 nombre[planta-1][habitacion-1] = temp;
  64.                 ocupada[planta-1][habitacion-1]=true;
  65.                 System.out.println("La reserva se ha realizado");
  66.                 Ejercicio40.main(args);
  67.             }
  68.             break;
  69.         case 2:
  70.             System.out.println("Introduzca la planta: ");
  71.             planta = Integer.parseInt(br1.readLine());
  72.             if(planta > ocupada.length && planta > 0) {
  73.                 System.out.println ("Numero de planta incorrecto");
  74.                 Ejercicio40.main(args);
  75.             }
  76.             else {
  77.                 System.out.println("Introduzca la habitacion: ");
  78.                 habitacion = Integer.parseInt(br1.readLine());
  79.                 if(habitacion>ocupada[planta-1].length && habitacion > 0) {
  80.                     System.out.println("Numero de habitacion incorrecto");
  81.                     Ejercicio40.main(args);
  82.                 }
  83.                
  84.             }
  85.            
  86.             if(ocupada[planta-1][habitacion-1]){
  87.                 System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);
  88.                 nombre[planta-1][habitacion-1] = null;
  89.                 ocupada[planta-1][habitacion-1]=false;
  90.                 System.out.println("La reserva se ha borrado con exito");
  91.             }
  92.             break;
  93.         case 3:
  94.             System.out.println("Introduzca la planta: ");
  95.             planta = Integer.parseInt(br1.readLine());
  96.             if(planta > ocupada.length && planta > 0) {
  97.                 System.out.println ("Numero de planta incorrecto");
  98.                 Ejercicio40.main(args);
  99.             }
  100.             else {
  101.                 System.out.println("Introduzca la habitacion: ");
  102.                 habitacion = Integer.parseInt(br1.readLine());
  103.                 if(habitacion>ocupada[planta-1].length && habitacion > 0) {
  104.                     System.out.println("Numero de habitacion incorrecto");
  105.                     Ejercicio40.main(args);
  106.                 }
  107.                
  108.             }
  109.            
  110.             if(ocupada[planta-1][habitacion-1]){
  111.                 System.out.println("La habitacion " + habitacion + "de la planta " + planta+ " esta ocupada por " + nombre[planta-1][habitacion-1]);
  112.             }
  113.             else {
  114.                 System.out.println("La habitacion esta vacia");
  115.             }
  116.             break;
  117.         case 4:
  118.             System.exit(0);
  119.         default:
  120.             System.out.println("Opción incorrecta. Elija otra opcion");
  121.             Ejercicio40.main(args);
  122.             break;      
  123.         }
  124.     }
  125. }
  126.  

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

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Tengo un problema con un programa que hice
« Respuesta #1 en: Viernes 14 de Noviembre de 2008, 20:29 »
0
Muy simple. Declara los arrays fuera del método main:

Código: Java
  1. //...
  2. public boolean[][] ocupada = new boolean [6][];
  3. ocupada[0]=new boolean [100];
  4. ocupada[1]=new boolean [100];
  5. ocupada[2]=new boolean [100];
  6. ocupada[3]=new boolean [100];
  7. ocupada[4]=new boolean [100];
  8. ocupada[5]=new boolean [40];
  9. public String[][] nombre = new String [6][];
  10. nombre[0]=new String [100];
  11. nombre[1]=new String[100];
  12. nombre[2]=new String [100];
  13. nombre[3]=new String [100];
  14. nombre[4]=new String [100];
  15. nombre[5]=new String [40];
  16.  
  17. public static void main(String[] args) throws Exception {
  18.   Ejercicio40 ejercicio = new Ejercicio40();
  19.   // ...
  20.  
  21. }
  22.  
  23.  

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:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

madafauk

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Tengo un problema con un programa que hice
« Respuesta #2 en: Sábado 15 de Noviembre de 2008, 12:02 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Tengo un problema con un programa que hice
« Respuesta #3 en: Domingo 16 de Noviembre de 2008, 00:06 »
0
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 (...)
Ya me estaba preguntando para qué !@*& llamabas nuevamente al main()  :devil:

Bien por tí por haber dado con esa solución  :good:
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas