indexOf(): buscar la primera vocal de una palabra en Groovy

Groovy es un lenguaje de programación mixto, es decir, permite programar de forma dinámica, estática o de ambas formas. Groovy es un lenguaje orientado a objetos y como tal, hay métodos que nos permiten trabajar sobre ellos; uno de estos métodos es indexOf(). El objetivo de este programa es el de encontrar la primera vocal en una palabra ingresada por el usuario.

Código fuente

En este programa se pueden detallar dos cosas, la primera es que no se requiere importar paquetes ya que Groovy importa varios de ellos por defecto y lo segundo es que se ha programado tanto de forma estática como dinámica. También se puede observar que no hay función o método main(), esto es opcional.

Función filtrar()

La función filtrar() recibe un solo parámetro de tipo int, verifica si es diferente a -1 y devuelve el valor de la variable «i»; de lo contrario devuelve el valor de 45000.

Esta función básicamente se crea para corregir un pequeño error que se produce al comparar más adelante los índices de todas las vocales usando la función Min(), este error es causado porque el método indexOf() devuelve el valor negativo de -1.

Creando objeto Scanner

Usamos la clase Scanner() para crear el objeto Scanner, que debe ser inicializado pasando como argumento el campo statico in de tipo InputStream que se encuentra en la clases System().

Usaremos este objeto para leer más adelante la información ingresada por el usuario.

Solicitar y leer la palabra ingresada por el usuario

El programa debe permitir al usuario ingresar la palabra que desea que sea evaluada. Se usa la función print() para mostrar un mensaje al usuario solicitando que ingrese una palabra. Esa es la gracia de todo.

Usamos el método nextLine() del objeto Scanner creado anteriormente para leer la información ingresada por el usuario y luego es almacenada en la variable «palabra» de tipo String.

Convertir palabra en minúscula

Es muy posible que el usuario ingrese palabras que contengan caracteres en mayúscula y esto puede causar el procesamiento erróneo de la información al momento de obtener los índices exactos de las vocales. Lo más apropiado es convertir la palabra en minúscula.

Convertimos la palabra ingresada por el usuario en minúscula usando el método .toLowerCase() y luego la volvemos a asignar a la variable «palabra».

Obtener los índices de cada vocal

En esta etapa el programa procesa todo y obtiene los índices de cada vocal. Haremos uso de la función filtrar() que hemos creado anteriormente y también haremos uso del método indexOf().

Con el método indexOf() le pedimos al programa que nos devuelva el índice de la primera ocurrencia de cada vocal, si no existe la vocal en la palabra, entonces nos va a devolver -1. Luego usamos la función filtrar() para cambiar el valor negativo por uno positivo.

Obteniendo el índice menor, método Math.min()

Para poder saber cual es la primera vocal de la palabra ingresada por el usuario, primero debemos saber cual es el índice menor de los 5 índices obtenidos.

Usamos el método estático min(), de la clase Math, para comparar todos los índice y obtener el menor; por último asignamos el valor obtenido a la variable ind. El método min() toma 2 parámetro, el primero es el valor del índice de la vocal que deseamos comparar y el segundo es una llamada nuevamente al mismo método, excepto la última llamada que recibe los valores de «o» y «u».

Mostrando el resultado

El programa debe mostrar un resultado en pantalla que corresponde a la primera vocal y su índice.

La primera función println() muestra la primera vocal encontrada usando su índice encontrado en el paso anterior y la segunda función println() muestra el índice en donde se encuentra la vocal.

Probando el programa

Para saber si el programa funciona como lo esperado hay que hacer una prueba.

[fixedtorres@linuxero]$ groovy BuscarPrimeraVocal.groovy
Ingrese la palabra a evaluar: 16 de Agosto de 2019

La primera vocal es: e
Su indice es: 4
[fixedtorres@linuxero]$ 

El programa funciona como lo esperado mostrando que la primera vocal encontrada es la «e» y cuyo índice es el «4». El índice nos indica el lugar en donde se encuentra la vocal, en este caso está después de la primera «d».

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *