Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

Programación con switch

Objetivo

Aprender a utilizar la sentencia switch para el control de flujos y aprender manejo de errores

Producto a Entregar

Un archivo comprimido con el programa generado en la actividad.

Forma de Trabajo

Equipos

Tiempo estimado

1 hora

Forma de Entrega

Por blackboard

Recomendaciones

  • Sigue las instrucciones de la actividad y ejercita la lectura crítica.
  • El manejo de errores es muy importante ya que permite que el usuario controle el sistema y no al revés.
  • El switch permite hacer controlar el programa de maneras diferentes que el if.

 

Instrucciones

Paso 1:

Descarga el esqueleto de la aplicación, abre el proyecto en NetBeans, compílalo y córrelo. Aparecerá una interfaz parecida a la siguiente:

Paso 2:

Antes de continuar con el ejercicio veamos un poco más acerca del manejo estructurado de errores. La sintaxis del try-catch es la siguiente:

En la parte del try debemos poner el código que podría tener errores (por ejempo, hacer el cast de un String a un int). El código se va a ejecutar hasta el final o hasta que ocurra un error. Si ocurre un error entonces se ejecuta el catch. Sin importar si ocurrieron errores o no siempre se ejecuta el finally (que nos sirve para poder realizar limpieza al final). Podemos ver el comportamiento de manera gráfica en el siguiente diagrama:

Podemos hacer un ejemplo en el que hagamos un cast de String a int, en caso de que no se pueda convertir se muestra un mensaje de error.

Como podemos ver en la parte del catch debemos poner el tipo de excepción que ocurrió. La excepción más general es Exception, además de esta hay muchas excepciones que podemos manejar para darle retroalimentación al usuario de manera más clara. Por ejemplo:

  • IOException: Ocurre cuando hay un error al leer o escribir un archivo o al leer del teclado.
  • NumberFormatException: Ocurre cuando hay un error al hacer un cast.
  • ArithmeticException: Ocurre cuando hay un error al realizar una operación (por ejemplo división entre cero).

Podemos utilizar más de una clásula catch para manejar excepciones de manera más precisa o para manejar varios errores diferentes que podrían pasar dentro de un mismo código, por ejemplo, si después de hacer un cast a dos números se intenta hacer una división podrían ocurrir errores de cast o errores aritméticos de división entre cero. Podemos proteger nuestro programa con el siguiente código:

Pero si existen tantas excepciones ¿cómo saber qué excepciones manejar? Por suerte NetBeans también nos ayuda en eso al mostrarnos la ayuda en linea de los métodos. Por ejemplo, al escribir el método parseInt() aparece la siguiente ayuda:

Podemos ver que en la parte de hasta abajo aparece que va a aventar NumberFormatException en caso de que el String no contenga un integer, con lo que no sólo sabemos qué excepciones podrían ocurrir sino que también sabemos cuándo es posible que ocurran y bajo qué condiciones.

Paso 3:

Ahora sí vuelve a la aplicación. Abre el código presionando source y en la ventana ToDo busca la parte de pedir la temperatura. Nos dice que la temperatura debe ser un double, por lo que sabemos que vamos a utilizar el cast Double.parseDouble() pero como no estamos seguros que lo que está dentro de la caja de texto sea un número real (podrían ser letras) debemos de manejar la excepción mediante un try-catch. Puedes basarte en el siguiente código:

El return al final del catch hace que en caso de que ocurra el error el método termine, es decir, que el código no se siga ejecutando. Más adelante veremos un poco más acerca de los métodos y la programación modular, pero por el momento nos sirve para que todo el código que pongamos abajo no se ejecute si no tenemos datos válidos.

Paso 4:

Para el ejercicio de vocales y consonantes vamos a necesitar saber qué letra seleccionó el usuario. El tipo de dato que nos permite representar una letra es el char. Recuerda que el método getText() siempre nos devuelve un String, por desgracia el String no es de tipo char, así que no podemos realizar la comparacion directamente sino que tenemos que obtener el primer caracter del String (aqui no podemos hacer un cast porque String es un conjunto de caracteres y no puede representarse como un solo caracter).

Para poder hacer esto debemos aprender un poco más acerca de la clase String. Esta clase tiene varios métodos muy útiles que nos permiten obtener información y manipular lo que hemos escrito o lo que ha escrito el usuario. Un método que podemos utilizar para obtener el primer caracter dentro de un String es el método charAt(), que se utiliza de la siguiente manera:

Es muy importante fijarnos que el método charAt() recibe el indice de la letra que quiere, empezando de cero. En el ejemplo anterior devolvería la 'H' (que es la primera letra). Tambíen es importante fijarnos que al comparar debemos utilizar la letra entre comillas sencillas y el color cambiará a verde para saber que realmente es un char y no un String.

  • ¿Qué excepciones podrían mostrarse cuando mandamos llamar el método charAt()?

Otro método importante de la clase String es el método length() que nos permite saber cuántos caracteres tiene un String. Puedes utilizar este método de la siguiente manera:

Paso 5:

Utilizando tus conocimientos sobre excepciones, control de flujos con if y switch y operadores realiza los ejercicios de esta sesión que se encuentran marcados con TODO en el código.

Los ejercicios son:

  • Mostrar si una letra introducida por el usuario es vocal o consonante
  • Mostrar un mensaje que basándose en la terminación de una placa diga qué día no circula
  • Mostrar si dados dos números a y b por el usuario, a es divisible entre b
  • Mostrar un mensaje de recomendación de acuerdo a una temperatura dada por el usuario

Comprime tu carpeta de trabajo y mándala por Blackboard.

Ayudanos a mejorar este laboratorio:

¿Cuál es tu opinión del laboratorio?

(1 - buena; 5 - mala).

1       2       3       4       5
¿Cómo se puede mejorar?
¿Encontraste un error? ¿Cuál?

Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta