Estructuras de control if else y switch en JAVA

Estas estructuras son básicas en cualquier programa, y permiten que este elija ciertos caminos de ejecución dependiendo si se cumple o no cierta condición. Para ello explicaremos las estructuras de control de selección if else y switch.


La sentencia if else
La sentencia if else nos permite ejecutar un bloque de código o no, dependiendo de una condición que se evalúa justo antes de este bloque. Esta condición se evalúa a un valor booleano, es decir, su resultado solo puede tomar dos valores, true o false. A continuación podréis verlo en un ejemplo:

int edad = 21;
if(edad >= 18) {
    System.out.println("Eres mayor de edad.");
} else {
    System.out.println("Eres menor de edad.");
}
Como podrás prever, si la condición es evaluada como true como es el caso, se ejecutará el primer println() mostrando que eres mayor de edad, si la condición fuese false, se ejecutaría el segundo println(). Siempre se ejecuta uno de los bloques si está presente el else, sino se ejecutará un bloque o ninguno.

También podemos añadir un nuevo bloque if en la sentencia else, formando los denominados if encadenados, pudiendo hacer todos los que queramos:
int edad = 50;
if(edad <= 14) {
    System.out.println("Eres un niño.");
} else if(edad > 14 && edad < 18){
    System.out.println("Eres adolescente.");
} else if(edad >= 18 && edad < 65) {
    System.out.println("Eres un adulto.");
} else {
    System.out.println("Eres anciano.");
}
En este caso la salida por pantalla será "Eres un adulto.", de esta manera podemos colocar tantos else if como queramos, además como vemos, en la última opción se puede obviar el if, y colocar solo el else, ya que no hay mas posibilidades que tener en cuenta.

También se pueden colocar bloques if else, dentro de otros bloques if else, y encadenar tantos como necesitemos, eso si, teniendo en cuenta que hacer esto muchas veces puede dificultar la lectura de nuestro código:
char sexo = 'f';
int edad = 25;
if(edad >= 18) {
    if(sexo == 'm') {
        System.out.println("Eres un hombre mayor de edad.");
    } else {
        System.out.println("Eres una mujer mayor de edad.");
    }
} else {
    if(sexo == 'm') {
        System.out.println("Eres un niño menor de edad.");
    } else {
        System.out.println("Eres una niña menor de edad.");
    }
}

La sentencia switch
Esta sentencia permite elegir múltiples caminos a seguir por el flujo de ejecución de nuestro programa. En este caso, el camino a seguir se selecciona basándose en el valor de una expresión que se evalúa a un valor entero:
int mes = 2;
switch(mes) {
    case 1:
        System.out.println("Es enero");
        break;
    case 2:
        System.out.println("Es febrero");
        break;
    case 3:
        System.out.println("Es marzo");
        break;
    case 4:
        System.out.println("Es abril");
        break;
    default:
        System.out.println("Ninguno de los anteriores");
}
En este caso, la salida sería "Es febrero", podemos poner todos los case que necesitemos y utilizar el default o no, de esta manera si la opción a evaluar no esta contemplada en ninguno de los case el switch no hará nada y la ejecución del programa seguiré de largo.

Además como habréis visto, se utiliza la palabra reservada break, la cual no está muy bien vista y solo se debe utilizar en casos realmente necesarios, pues bien, en la estructura switch es necesario. Sin break, nuestro programa ejecutaría el código del case evaluado como true, en nuestro caso el 2º, y además todos los siguientes hasta algún break, y si no lo hubiera, hasta el final de la estructura switch, ejecutando el código de los case inferiores y también del default.

El caso de no utilizar break, puede ser conveniente en algunos casos como en este ejemplo:
int mes = 4;
switch(mes) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        System.out.println("El mes tiene 31 dias.");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        System.out.println("El mes tiene 30 dias.");
        break;
    default:
        System.out.println("El mes es febrero.");
}

Comentarios

  1. Una duda si no tiene scanner como te pedira si es hombre o mujer como te dara la opcion de elegir ccreo que deberias mejorar eso

    ResponderEliminar
    Respuestas
    1. El objetivo de esta entrada era probar el funcionamiento de las estructuras if...else y del switch, así que no es necesario pedir datos al usuario en los ejemplos, lo importante es cómo actúan las estructuras de control, y no que el usuario pueda o no introducir datos ya que haría el ejemplo más largo y total, ya sabrías que si introduces una "f" eres una mujer y si introduces un "m" eres un hombre.
      Saludos.

      Eliminar
    2. No se si hablas de esto!!! Ahi estas ingresando el carácter y pidiendo la edad..
      import java.io.*;
      import java.util.*;
      public class fom {
      public static void main (String [] args) throws IOException{
      Scanner sx = new Scanner (System.in);
      char sexo;
      int edad = 25;
      System.out.println("Ingrese su sexo (solo se permite la letra f o m )");
      sexo = (char) System.in.read();
      System.out.println("Ingrese su edad");
      edad = sx.nextInt();
      if (edad >= 18){
      if (sexo == 'm'){
      System.out.println("Usted es un hombre mayor de edad");
      }else{
      System.out.println ("Usted es una dama mayor");
      }
      }else{
      if (sexo == 'm'){
      System.out.println("Usted es un hombre menor de edad");
      }else{
      System.out.println ("Usted es una dama menor de edad");
      }
      }
      }
      }

      Eliminar
  2. Muy buena esta explicación, tenia una duda sobre un funcionamiento mas practico del if que no sabia hacer y me la has resuelto con el ejemplo.
    Muchas gracias.

    ResponderEliminar
  3. Muchas gracias. me sirvio mucho estas explicaciones!!! Estudio Ing. Informatica y me has despejado las deudas Saludos!!

    ResponderEliminar
  4. quisiera que me ayuden con este ejercicio de condicionales en javascript crear un cuadro .7. Elaborar un formulario que detecto la edad psicológica de una persona.
    a. entre 1y 12 (niño)
    b. entre 12 y 16 (adolescente)
    c. entre 16y 28 (joven)
    d. entre 28y 30 (adulto)

    ResponderEliminar
  5. quisiera que me ayuden con este ejercicio de condicionales en javascript crear un cuadro .7. Elaborar un formulario que detecto la edad psicológica de una persona.
    a. entre 1y 12 (niño)
    b. entre 12 y 16 (adolescente)
    c. entre 16y 28 (joven)
    d. entre 28y 30 (adulto)

    ResponderEliminar
  6. quisiera que me ayudar con este ejercicios con JAVASCRIPT.es como un cajero si tengo 50000 y quiero retira 45000 me quedan 5000 y si deseo retíralos esos 5000 como hago

    ResponderEliminar
  7. Estoy estudiando bachillerato de software, recomende esta pagina a mis companeros de clase. Todos agradecidos/\.

    ResponderEliminar
  8. alguien que me ayude necesito un programa en java con estructura switch y if que me diga si una persona en niño adolescente o adulto de pendiendo de su edad si 0,9en niño de 10,20adolescente y 21,60adulto con menu porfa!!!!!!!!!!!

    ResponderEliminar
  9. String nombre=JOptionPane.showInputDialog("ingrese el nombre de la persona");
    String sexo=JOptionPane.showInputDialog("ingrese el sexo de la persona M O F:");
    int año=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el año de nacimiento: "));
    int edad=2019-año;
    {
    if(año>1900 && año<=2019){
    if(edad>=18||edad<=17&&sexo.equalsIgnoreCase("M")||sexo.equalsIgnoreCase("F")){
    if(edad>=18&&sexo.equalsIgnoreCase("M")){
    JOptionPane.showMessageDialog(null,nombre+" tiene "+edad+" años por lo tanto es mayor de edad");
    }else if(edad<=17&&sexo.equalsIgnoreCase("M")){
    JOptionPane.showMessageDialog(null,nombre+" tiene "+edad+" años por lo tanto es menor de edad");
    }else{
    JOptionPane.showMessageDialog(null,nombre+" tiene "+edad+" años por lo tanto es mayor de edad OJO ES HOMBRE ");

    ResponderEliminar
  10. Realiza un programa en Java que conceda el acceso a un usuario
    según la edad y si se encuentra inscrito en el evento. La condición es
    que mediante un JOptionPane se capturen los datos de entrada. Si la
    edad está entre 18 y 25 años y está inscrito, el programa debe emitir
    un mansaje que diga puede pasar, “Tienes n Años” en caso contrario,
    la persona no puede pasar, “Solo tienes” n “Años”.

    ResponderEliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Autocompletado de codigo en Sublime Text

Compilar y ejecutar JAVA desde Notepad++

Compilar y ejecutar JAVA desde Sublime Text