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:
También podemos añadir un nuevo bloque if en la sentencia else, formando los denominados if encadenados, pudiendo hacer todos los que queramos:
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:
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:
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:
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."); }
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
ResponderEliminarEl 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.
EliminarSaludos.
Hola Amigos !! :D
EliminarNo se si hablas de esto!!! Ahi estas ingresando el carácter y pidiendo la edad..
Eliminarimport 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");
}
}
}
}
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.
ResponderEliminarMuchas gracias.
Muchas gracias. me sirvio mucho estas explicaciones!!! Estudio Ing. Informatica y me has despejado las deudas Saludos!!
ResponderEliminarlas dudas perdón XD
Eliminarquisiera 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.
ResponderEliminara. entre 1y 12 (niño)
b. entre 12 y 16 (adolescente)
c. entre 16y 28 (joven)
d. entre 28y 30 (adulto)
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.
ResponderEliminara. entre 1y 12 (niño)
b. entre 12 y 16 (adolescente)
c. entre 16y 28 (joven)
d. entre 28y 30 (adulto)
Este comentario ha sido eliminado por el autor.
ResponderEliminarquisiera 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
ResponderEliminarEstoy estudiando bachillerato de software, recomende esta pagina a mis companeros de clase. Todos agradecidos/\.
ResponderEliminaralguien 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!!!!!!!!!!!
ResponderEliminarString nombre=JOptionPane.showInputDialog("ingrese el nombre de la persona");
ResponderEliminarString 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 ");
Realiza un programa en Java que conceda el acceso a un usuario
ResponderEliminarsegú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”.