elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda con Switch anidados
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Switch anidados  (Leído 7,480 veces)
Fryuio

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Ayuda con Switch anidados
« en: 3 Diciembre 2016, 12:47 pm »

Bueno mi pregunta es sencilla, cómo hago para salir de switch anidados, pero no al anterior, sino al 1º de todos. Ejemplo:
Código
  1. public class prueba_ {
  2.  
  3. public static void main(String[] args) {
  4. int a;
  5. int b;
  6. int c;
  7. do {
  8. /*Supongamos inicio a */
  9. switch (a) {
  10. case 1: /*Sentencias... */ break;
  11. case 2: /*Sentencias... */ break;
  12. case 3: /*Sentencias... */ break;
  13. case 4:  
  14.  
  15. do {
  16. /*Supongamos inicio b */
  17. switch (b) {
  18. case 1: /*Sentencias... */ break;
  19. case 2: /*Sentencias... */ break;
  20. case 3:
  21. do {
  22. /*Supongamos inicio c */
  23. switch (c) {
  24. case 1: /*Sentencias... */ break;
  25. case 2: /*Sentencias... */ break;
  26. default: break;
  27. }
  28. } while (c<2);
  29. default: break;
  30. }
  31. } while (b<3);
  32. default: break;
  33. }
  34. } while (a<4);
  35. }
  36.  
  37. }

Como podría por ejemplo ir directamente del case 1 del switch c, al switch a.
Gracias de antemano.


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con Switch anidados
« Respuesta #1 en: 3 Diciembre 2016, 12:56 pm »

Lo normal es que vaya a donde quieras de forma "natural". Por ejemplo, tienes un do-while. Su condición, si es false, lo haría salir al anterior, y luego lo mismo para el B.
También puedes poner una flag:
Código
  1. boolean salir = false;
  2. do{
  3.    // switch
  4.    salir = true;
  5. }while(/* tu condición */ && !salir);

Otra opción, es con el "break with label":
Código
  1. search:
  2. for (i = 0; i < arrayOfInts.length; i++) {
  3.    for (j = 0; j < arrayOfInts[i].length; j++) {
  4.        if (arrayOfInts[i][j] == searchfor) {
  5.            foundIt = true;
  6.            break search;
  7.        }
  8.    }
  9. }
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


Siempre que puedas, mi recomendación es que lo hagas sin labels, de la forma más estructurada posible (Otros lenguajes no te permitirán hacer lo del label)

Otra opción, sería dividir el código en funciones (donde sean necesarias). Así, tendrás 2 posibilidades: break y return. Return saldrá de todos los loops y switchs, mientras que break solo del primero.


En línea

Fryuio

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Ayuda con Switch anidados
« Respuesta #2 en: 3 Diciembre 2016, 19:23 pm »

Lo normal es que vaya a donde quieras de forma "natural". Por ejemplo, tienes un do-while. Su condición, si es false, lo haría salir al anterior, y luego lo mismo para el B.
También puedes poner una flag:
Código
  1. boolean salir = false;
  2. do{
  3.    // switch
  4.    salir = true;
  5. }while(/* tu condición */ && !salir);

Otra opción, es con el "break with label":
Código
  1. search:
  2. for (i = 0; i < arrayOfInts.length; i++) {
  3.    for (j = 0; j < arrayOfInts[i].length; j++) {
  4.        if (arrayOfInts[i][j] == searchfor) {
  5.            foundIt = true;
  6.            break search;
  7.        }
  8.    }
  9. }
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


Siempre que puedas, mi recomendación es que lo hagas sin labels, de la forma más estructurada posible (Otros lenguajes no te permitirán hacer lo del label)

Otra opción, sería dividir el código en funciones (donde sean necesarias). Así, tendrás 2 posibilidades: break y return. Return saldrá de todos los loops y switchs, mientras que break solo del primero.

Muchas gracias pero lo que yo quiero no es retroceder al anterior, quiero ir directamente al primero.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con Switch anidados
« Respuesta #3 en: 3 Diciembre 2016, 22:55 pm »

Y eso te respondo. Con esas técncias, puedes hacerlo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿ejercicio con if anidados? programacion c++?
Programación C/C++
vani18 1 5,172 Último mensaje 3 Junio 2010, 22:35 pm
por Horricreu
problema if's anidados
Programación C/C++
m@o_614 1 1,916 Último mensaje 27 Diciembre 2012, 03:45 am
por rir3760
Llegan los comentarios anidados a Facebook
Noticias
wolfbcn 4 1,729 Último mensaje 27 Marzo 2013, 14:15 pm
por Novlucker
AYUDA!! Combobox anidados
Desarrollo Web
aldg 5 5,580 Último mensaje 5 Mayo 2013, 23:04 pm
por aldg
Div anidados
Desarrollo Web
mapers 2 2,387 Último mensaje 18 Septiembre 2013, 07:24 am
por mapers
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines