403 artículos, 1.998 opiniones y 1.320 usuarios desde 2006. Ver referencias
Por francisco | 11 de Octubre del 2007
Usaremos un bloque de repetición DO - WHILE cuando queramos que por lo menos se ejecute una vez el código contenido dentro del bucle. Como todos los bucles en java estos se irán ejecutando mientras se cumpla una condición que siempre estará representada por un valor booleano.
Uno de los usos a los que siempre ha estado destinado el bucle DO – WHILE es al de creación de menús. Veamos un ejemplo.
Lo primero que haremos será crear un nuevo proyecto en Eclipse al que llamaremos Cuatro y le añadiremos una clase llamada menu. En esta clase insertaremos el siguiente código:
Comentemos este código. Hemos creado un atributo llamado seleccionado donde guardaremos la opción de menú que seleccione el usuario, de este modo podremos mostrar el resultado según el valor de esta variable.
Creamos el menú dentro del bucle DO – WHILE y añadimos la sentencia seleccionado = sc.nextInt(); para que el programa se detenga hasta que el usuario introduzca el numero de la opción que desea ejecutar y pulse intro. Cuando el usuario introduce ese numero miramos que no sea menor que 1, es decir 0 o un numero negativo, y que no sea mayor de 3. Si cumple estos requisitos continuaremos adelante con nuestro programa, en caso contrario le volveremos a mostrar el menú y esperaremos un valor correcto.
Una vez tenemos un valor correcto evaluamos la variable seleccionado en el bloque switch y dependiendo de su valor ejecutaremos uno de los case de los que se compone.
Si el valor fuese 1: Mostraremos la hora actual. Podríamos utilizar la clase Date y sus métodos getHours y getMinutes pero son métodos deprecated, es decir en desuso o antiguos. Así que utilizaremos la clase Calendar que esta incluida en import java.util.*; y su método getInstance. Y mostraremos el resultado por pantalla:
Usamos el método Calendar.HOUR_OF_DAY que nos devuelve la hora en formato de 24 horas.
Si el valor obtenido fuese 2: Mostramos el día de la semana actual. Usaremos el método Calendar.DAY_OF_WEEK de la clase Calendar. Este método nos devuelve el día de la semana como un número comenzando como el 1 al que interpreta como domingo y terminando con un 7 al que interpreta como sábado.
Mediante una serie de else if damos valor a la variable DiaSemanaLetra y después mostramos el valor por la consola.
Si el valor obtenido fuese un 3: Mostramos el día y el mes actual. Usaremos el método Calendar.DAY_OF_MONTH de la clase Calendar. Este método nos devuelve el día del mes y el método Calendar.MONTH nos devuelve el mes como un numero comenzando como el 0 al que interpreta como enero y terminando con un 11 al que interpreta como diciembre.
El código comentado muestra que código utilizamos para mostrar el día y el mes actual. Podemos observar que el procedimiento es muy parecido al anterior cuando mostrábamos el día de la semana. En cambio luego lo hemos resulto de otra forma, solo para mostrar que para cualquier problema puede haber, y normalmente hay, múltiples soluciones.
En este caso la segunda solución mejora a la primera solo en velocidad de ejecución. Siempre es mas rápido crear un array y extraer uno de sus valores, que evaluar una variable en múltiples else if.
Las array las trataremos en breve. Sirva por el momento puntualizar que un array puede definirse como una colección de variables de un mismo tipo. A las que se les asigna y se les recoge un valor por medio de un índice: array [indice]. Es este caso el índice es el valor que devuelve el método DiaMes.get(Calendar.MONTH)
Para probar esta clase añadiremos a nuestro proyecto Cuatro la clase TestMenu y marcaremos la casilla de public static void main(String[] args). En el procedimiento main incluiremos el siguiente codigo:
Y podremos comprobar que el programa responde cuando marcamos un 1, 2 o 3 y pulsamos el intro y en cambio si marcamos cualquier otro número nos muestra de nuevo el menú.
¿Te ha gustado? Recibe lo más interesante sobre informática en tu email:
Artículos relacionados
Opiniones
en la linea 19 falta un cierre de llave } sino no compila, ya que el DO - WHILE aunque es una estructura junta hay que cerrarlas, como los anteriores sigue siendo un gran tuto, saludos
Hemos comprobado que el formato automático del código cortaba partes de las líneas de mismo, creando un código incorrecto.
Ya hemos solucionado el problema y se ha repasado todo el código publicado, esperamos que de ahora en adelante se formatee de forma correcta. De todos modos si alguien observar algo extraño agradecemos siempre los avisos. Gracias a todos y disculpar las molestias.
me pueden decir como puedo sabe el numero de dias que tiene cada mez
gracias.
olle en l codigo te falta una llave de cierre, o por lo menos cuano se la coloque me funciono...
mira:
do{
System.out.println(*****************************);
System.out.println(Seleccione una opcion de menu);
System.out.println(1. Que hora es?);
System.out.println(2. Que dia de la semana es?);
System.out.println(3. Que dia del mes es?);
Scanner sc = new Scanner(System.in);
seleccionado = sc.nextInt();
----- falta una llave de cierre aqui (})
while(seleccionado 1 seleccionado 3);
Comparte tu opinión
Tu opinión es importante para todos nosotros.
Temas relacionados