Número, consonante o vocal en Java

28/Ene/2021 Java , 1 Comentario
Programación en Java

Ya habíamos publicado un artículo sencillo que nos ayudaba a contar las vocales de una palabra. Pero nos habéis pedido si podemos hacer uno que nos diga si el texto introducido es un número consonante o vocal en Java. Así que vamos a ello.

Preparando los arrays

El enfoque es muy sencillo y lo que vamos a crear son 3 arrays en Java. El primero contendrá las vocales:

char[] vocales = {'a','e','i','o','u'};

el segundo contendrá las consonantes:

char[] consonantes = {'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};

y el tercero los números:

char[] numeros = {'0','1','2','3','4','5','6','7','8','9'};

Lectura de caracteres

Lo que haremos será que cuando pidamos al usuario que nos introduzca por consola un carácter comprobaremos si este está dentro de uno de estos arrays. Pero, ¿cómo pedimos que nos introduzca un dato por consola? Pues en este caso vamos leer directamente por la entrada con System.in. Tenemos que saber que el campo System.in es una clase InputStream.

 char c = (char) System.in.read();

Vemos que nos apoyamos en el método .read() y que convertimos mediante una operación de «casting» a un tipo char.

Buscando en los Arrays

Ahora pasamos a buscar en los arrays. La búsqueda un carácter la realizaremos convirtiendo el array a una cadena y mediante el método .indexOf(). Este método nos devuelve un número entero con la posición del carácter buscado su está dentro del array o nos devuelve un número negativo si no lo encuentra. Así que validaremos que sea un número mayor de 0.

Como hay que buscar en tres arrays montamos un método que reciba un array y el carácter buscado para poder optimizar el código:

public static boolean esUn(char[] caracteres, char c) {
   return (new String(caracteres).indexOf(c) >= 0)?true:false;
}

Tomando la decisión de si es un número, consonante o vocal en Java

Por último lo que haremos será ir preguntando por los diferentes array mediante el método .esUn() que hemos creado para ver si es de alguno de los tres tipos o por si el contrario el usuario ha introducido por teclado otra cosa. Estas decisiones nos quedarían de la siguiente manera:

try {
    System.out.println("Introduce un carácter en la consola y pulsa intro");
    char c = (char) System.in.read();
    
    if (esUn(consonantes,c)) {
        System.out.println("Has insertado una consonante");
    } else if (esUn(numeros,c)) {
        System.out.println("Has insertado un número");
    } else if (esUn(vocales,c)) {
        System.out.println("Has insertado una vocal");
    } else {
        System.out.println("Has insertado algo que no es una consonante, ni un número, ni una vocal")
    }

} catch (IOException ioe) {
    ioe.printStackTrace();
}

Con esto ya habríamos conseguido la sencilla forma de validar si el carácter introducido por consola por parte del usuario es un número, consonante o vocal en Java. Y aquí un reto, ¿Os atreveríais a realizarlo y simplificarlo mediante expresiones regulares? Si alguien lo propone lo publicaremos y explicaremos con su nombre. Animaros.

 

Vídeos sobre Java


Un comentario en “Número, consonante o vocal en Java”

Víctor Cuervo

isaac

estaría cool que pusieran el código completo, si le entiendo más o menos pero no me queda

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.