Foros del Web » Programación para mayores de 30 ;) » Java »

Salida del bucle

Estas en el tema de Salida del bucle en el foro de Java en Foros del Web. Hola que tal a todos, mi problema siguen siendo los ciclos, estoy constuyendo un switch dentro de un do while, en teoria cuando una de ...
  #1 (permalink)  
Antiguo 31/03/2009, 14:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Salida del bucle

Hola

que tal a todos, mi problema siguen siendo los ciclos, estoy constuyendo un switch dentro de un do while, en teoria cuando una de la opciones elegidas termina normalmente se le pide al usuario que oprima una tecla para continuar y con ello regresar al menu principal, es justo lo que quiero hacer, pero al parecer algo esta mal con mi código, ya que al terminar de ejecutarse la opción, omite la parte de oprimir una tecla para continuar y regresar al menu anterior, y sin más el programa termina esto es lo que tengo y ojalá me puedan ayudar,

Código:
            case 1: 
               System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
               System.out.println("   LISTADO  DE  HOSTS");
               System.out.println("");
               System.out.println("");
               
               //try
               //{
                  String []s = new String [200];
                  int can = 0;
                  
                  BufferedReader abrir = new BufferedReader(new FileReader("hosts.cfg"));
                  while((s[can] = abrir.readLine()) != null)
                  {
                     can++;
                  }
                  
                  for (int j=1; j<can; j++)
                  {
                     String lineA = null;
                     int cantLines = 0;
                     
                     BufferedReader sarchivoB = null;
                     sarchivoB = new BufferedReader(new FileReader("hosts.cfg"));
                     
                     while (cantLines > can)
                     {
                        
                        if (sarchivoB.readLine() == null)
                        {
                           throw new IOException ("Archivo demasiado pequeño");
                        }
                        cantLines ++;
                     }
                     
                     while (cantLines <= can)
                     {
                        
                        lineA = sarchivoB.readLine();
                        if (lineA == null)
                        {
                           return;
                        }
                        
                        String uno, dos, tres, cuatro;
                        uno = lineA.substring(0,2);
                        dos = lineA.substring(4,19);
                        tres = lineA.substring(21,23);
                        cuatro = lineA.substring(25,31);
                                                
                        try
                        {
                           
                           //System.out.println(dato); 
                           
                           Socket socketA = new Socket();
                           socketA.connect(new InetSocketAddress(dos, 1025), 500);
                           
                           if(!socketA.getKeepAlive())
                           {
                              socketA.setKeepAlive(true);
                              System.out.println("     " + uno + "       " + dos + "         " + tres + "            " + cuatro + "         EN  LÍNEA");
                              socketA.close();
                           } 
                        }
                        catch(Exception exception)
                        {
                              System.out.println("     " + uno + "       " + dos + "         " + tres + "            " + cuatro + "        DESCONECTADO");
                        }
                        
                        cantLines++;
                     
                     }
                     System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                     System.out.println("   PRESIONA UNA TECLA PARA CONTINUAR...");
                     BufferedReader stdinA = new BufferedReader(new InputStreamReader(System.in));
                     char chA = (char) stdinA.read();
                  }

               //}               
               //catch(IOException ex)
               //{
               //   System.out.println("Error..." + ex.toString());
               //}

               
            break;
  #2 (permalink)  
Antiguo 01/04/2009, 04:05
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 3 meses
Puntos: 10
Respuesta: Salida del bucle

Wenas

Los case no son mas que if anidados. Yo por lo monso no veo el do-while que mencionas por ningun sitio. Tal vez tengo que ponerme gafas.

Una vez que termina el case que haces?? pon el codigo completo.

Saludos
  #3 (permalink)  
Antiguo 01/04/2009, 10:16
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Respuesta: Salida del bucle

Te doy toda la razón aquí esta mi código, ojalá me puedan ayudar, lo que quiero es que cuando termine la primera opción regrese al menú, lo mismo con la opción 4.

Código:
      int n1,n2,sum,res,div,multi; 
      int op;
      do
      {
         BufferedReader in =new BufferedReader(new InputStreamReader(System.in)); 
         System.out.println("  OPCIONES DISPONIBLES");
         System.out.println("");
         System.out.println(" 1. Estado de los host");
         System.out.println(" 2. Otra cosa");
         System.out.println(" 3. Otra cosa");
         System.out.println(" 4. Revisar archivo");
         System.out.println(" 5. Salir");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.println(" ");
         System.out.print(" TECLEE LA OPCION DESEADA SEGUIDA POR ENTER:  ");
         
         op = Integer.parseInt(in.readLine());
          
         switch(op)
         {
            case 1:
               System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
               System.out.println("   LISTADO  DE  HOSTS");
               System.out.println("");
               System.out.println("");
               
               //try
               //{
                  String []s = new String [200];
                  int can = 0;
                  
                  BufferedReader abrir = new BufferedReader(new FileReader("hosts.cfg"));
                  while((s[can] = abrir.readLine()) != null)
                  {
                     can++;
                  }
                  
                  for (int j=1; j<can; j++)
                  {
                     String lineA = null;
                     int cantLines = 0;
                     
                     BufferedReader sarchivoB = null;
                     sarchivoB = new BufferedReader(new FileReader("hosts.cfg"));
                     
                     while (cantLines > can)
                     {
                        
                        if (sarchivoB.readLine() == null)
                        {
                           throw new IOException ("Archivo demasiado pequeño");
                        }
                        cantLines ++;
                     }
                     
                     while (cantLines <= can)
                     {
                        
                        lineA = sarchivoB.readLine();
                        if (lineA == null)
                        {
                           return;
                        }
                        
                        String uno, dos, tres, cuatro;
                        uno = lineA.substring(0,2);
                        dos = lineA.substring(4,19);
                        tres = lineA.substring(21,23);
                        cuatro = lineA.substring(25,31);
                                                
                        try
                        {
                           
                           //System.out.println(dato); 
                           
                           Socket socketA = new Socket();
                           socketA.connect(new InetSocketAddress(dos, 1025), 500);
                           
                           if(!socketA.getKeepAlive())
                           {
                              socketA.setKeepAlive(true);
                              System.out.println("     " + uno + "       " + dos + "         " + tres + "            " + cuatro + "         EN  LÍNEA");
                              socketA.close();
                           } 
                        }
                        catch(Exception exception)
                        {
                              System.out.println("     " + uno + "       " + dos + "         " + tres + "            " + cuatro + "        DESCONECTADO");
                        }
                        
                        cantLines++;
                     
                     }
                     System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                     System.out.println("   PRESIONA UNA TECLA PARA CONTINUAR...");
                     BufferedReader stdinA = new BufferedReader(new InputStreamReader(System.in));
                     char chA = (char) stdinA.read();
                  }

               //}               
               //catch(IOException ex)
               //{
               //   System.out.println("Error..." + ex.toString());
               //}
      
            break;
                   
            case 2: 
                //hace algo
            break; 
             
            case 3: 
                //hace algo
            break; 

            case 4: 
               System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
               String arcLog = "logtrans.log";
               File archiLo = new File(arcLog);
               if (archiLo.exists())
               {
                  
                  BufferedReader sarchivoR = null;
                  sarchivoR = new BufferedReader(new FileReader("logtrans.log"));
                  int km = 0;
                  String lineaE = "";
                  while ((lineaE = sarchivoR.readLine()) != null) 
                  {
                     km++;
                  }
                  //System.out.println(k); //Total de líneas
                  
                  if (km < 5)
                  {
                     String Aline = null;
                     int cantiLine = 0;
                     
                     BufferedReader sarAchivo = null;
                     sarAchivo = new BufferedReader(new FileReader("logtrans.log"));
                     while (cantiLine < 0)
                     {
                        
                        if (sarAchivo.readLine() == null)
                        {
                           throw new IOException ("Archivo demasiado pequeño");
                        }
                        cantiLine ++;
                     }
                     
                     while (cantiLine <= km)
                     {
                        
                        Aline = sarAchivo.readLine();
                        if (Aline == null)
                        {
                           return;
                        }
                        System.out.println(Aline);
                        cantiLine++;
                     }
                  }
                  else
                  {
                     String Bline = null;
                     int cantALine = 0;
                     
                     BufferedReader sarBchivo = null;
                     sarBchivo = new BufferedReader(new FileReader("logtrans.log"));
                     while (cantALine < km - 5)
                     {
                        
                        if (sarBchivo.readLine() == null)
                        {
                           throw new IOException ("Archivo demasiado pequeño");
                        }
                        cantALine ++;
                     }
                     
                     while (cantALine <= km)
                     {
                        
                        Bline = sarBchivo.readLine();
                        if (Bline == null)
                        {
                           return;
                        }
                        System.out.println(Bline);
                        cantALine++;
                     }
                  }
               }
               else
               {
                  System.out.println("   NO SE HA REALIZADO NINGÚN ENVÍO");
               }
               System.out.println("\n\n\n\n\n\n\n\n\n\n\n");
               System.out.println("   PRESIONA UNA TECLA PARA CONTINUAR...");
               BufferedReader stdinC = new BufferedReader(new InputStreamReader(System.in));
               char chC = (char) stdinC.read();
            break;              

            case 5: 
               System.out.print("Saliendo ... "); 
               System.exit(0);
            break;

            default: 
                System.out.print("eleccion incorrecta" );
            break;
                     
         }
      }
      while(op!=5);
  #4 (permalink)  
Antiguo 01/04/2009, 11:22
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: Salida del bucle

Hola

para empezar deberias poner el codigo en funciones, asi seria mas claro

Código PHP:
do
{
    switch(
op)
    {
        case 
1:
            
funcion1();
            break;
        case 
2:
        ...
            
deafult:
            break;
     }
}while(
condicion); 
y en cuanto al error creo que es por el read, intenta mejor poner un readline

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:05.