Java desde Cero -Estructura de Control de Flujo – Switch

Vamos a revisar el segundo condicional de Java, y este es Switch el cual es una estructura de selección múltiple, la siguiente figura ilustra el ejemplo perfectamente:

switch-statement-flowchart

Si lo observamos con detenimiento veremos que es una expresión de condicionales anidados o que al menos puede ser reemplazado por ellos haciendo que su eso no sea de carácter obligatorio cuando nos encontramos en una situación similar, esto provoca que su uso sea menos; sin embargo, como una estructura del lenguaje es necesario explicarlo ya que aunque pueda ser sustituida en ocasiones brinda claridad en la implementación del código. Esta estructura de control de flujo solo puede evaluar números enteros o todo aquello que se pueda llevar a un entero; es decir, no puede evaluar cadenas, sí puede evaluar caracteres y los tipos enumerados, también sufre la restricción de solo evaluar valores concretos de la expresión y no intervalos  ni expresiones compuestas.

La estructura de Switch, está compuesta por múltiples “case” que es donde se evalúa la condición, un break por cada case que detendrá el flujo por switch y retornará al flujo anterior con las sentencias ya ejecutadas dentro de la opción que ha cumplido la condición y por un default que es opcional y que se ejecutará cuando no haya opción alguna que cumpla la condición.

“Hagamos un ejemplo de su uso, por ejemplo una calculadora ( aunque solo itere una sola vez), le pediremos al usuario que ingrese una opción a través de la consola tal que si es 1 entonces será una suma, 2 será una resta, 3 multiplicación y  4 una división“.

Para la entrada de datos por teclado debemos de hacer uso de la clase Scanner y crear una instancia del mismo, luego debemos de realizar la consulta creando un menú tal como se ha propuesto, además de ello debemos de crear dos variable de tipo double (ya que nuestra división podría terminar en decimales y no se podría realizar un adecuado tratamiento de formato con los tipo int), entonces:

package clases;
import java.util.Scanner;
public class Control_switch {

public static void main(String[] args) {
  Scanner entrada= new Scanner(System.in);
  System.out.println("Ingrese una operación \n 1 -Suma \n 2 -Resta \n 3 -Multiplicación \n 4 -División");
  int opcion=entrada.nextInt();
  double a, b;
  //continua con el switch
}}

Observamos que solo hemos declarado las variables a y b mas no las hemos inicializado, recordemos que según el flujo de ejecución toda variable debe ser declarada e inicializada antes de su uso, así que debemos de asegurarnos de ello para no tener saltos de error, otro aspecto a observar es el uso de “\n” esta sintaxis produce un salto de línea, y nos resulta útil en lugar de estar usando demasiados println.

Ahora debemos de implementar la estructura switch, recordemos que la condición (que será un número entero) recorrerá cada uno de los casos hasta encajar en alguno de ellos, en todas las operaciones (suma, resta, multiplicación y división) haremos uso de la instancia de Scanner para solicitar el ingreso de datos y almacenarlos en las variables a y b respectivamente; y al momento de la impresión es donde hemos de ejecutar la operación que se haya elegido; sin embargo, existe un detalle con la opción de división, en la división nosotros vamos a restringir que la salida del resultado sea a dos decimales, ya que podríamos tener un periódico puro o un número bastante inmenso en la parte decimal y no sería elegante, para poder redondear la salida del dato debemos darle formato, entonces debemos de usar el método printf que ya hemos visto anteriormente, entonces tenemos:

switch (opcion) {
  case 1:
     System.out.println("Ingrese el primer número");
     a=entrada.nextInt();
     System.out.println("Ingrese el segundo número");
     b=entrada.nextInt();
     System.out.println("La suma es: "+(a+b));
     break;
 case 2:
     System.out.println("Ingrese el primer número");
     a=entrada.nextInt();
     System.out.println("Ingrese el segundo número");
     b=entrada.nextInt();
     System.out.println("La resta es: "+(a-b));
     break;
  case 3:
     System.out.println("Ingrese el primer número");
     a=entrada.nextInt();
     System.out.println("Ingrese el segundo número");
     b=entrada.nextInt();
     System.out.println("La multiplicación es: "+(a+b));
     break;
  case 4:
     System.out.println("Ingrese el primer número");
     a=entrada.nextInt();
     System.out.println("Ingrese el segundo número");
     b=entrada.nextInt();
     System.out.print("La división es: ");;
     System.out.printf("%1.2f",(a/b));
     break;
  default:
     System.out.println("No ha elegido alguna de las opciones válidas");
     break;
}
entrada.close();

Luego de finalizada las operaciones no olvidemos en cerrar el flujo de datos, nota en la división que hemos dado el formato adecuado a dos decimales, pero para que todo aparezca en una sola línea hemos usado print sin el salto de línea.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s