Duda java, IsLetter

Hola. Tengo una duda de si lo siguiente se puede hacer como quiero:

Tengo que realizar varios subprogramas. Entre ellos uno que, introduciendo una cadena de caracteres, muestre en pantalla el numero de caracteres, vocales y consonantes.

El caso es que el numero de caracteres es facil, y he realizado un par de funciones para contar las vocales, uno para contarlas como tal y otro para ver si es vocal o no y asi poder usarlo en este otro.
El caso es que el profesor comentó que para hacer lo de las consonantes es mas comodo emplear la funcion "caracter.IsLetter()", pero no se como funciona, me explico:
Yo empleo:
for (int contador = 0 ; contador <= cadena.length() - 1 ; contador++) {
   if (cadena.charAt(contador).IsLetter()) {
porque quiero saber si es una letra, y luego ya miro si es o no una vocal para contar las consonantes, pero no me deja, el error que me da es que no se puede invocar IsLetter() "on the primitive type char", pero se mezcla el no saber traducirlo demasiado bien y no entender "tipo primitivo de caracter" que es como se me ocurre traducirlo.

Lo que tenia en mente con eso, es que cogiera letra a letra de la caden (tal y como he hecho para contar las vocales) y me devolviera si true si el caracter pertenece al abecedario, que es lo que hace el IsLetter según me comentó.

¿Se puede emplear en ese plan de concatenar esas dos funciones o no?
La funcion charAt de la clase String devuelve un caracter de tipo char, que es un tipo primitivo, no un objeto, por lo tanto no tiene metodos. El metodo isLetter estara en la clase Character, que es un wrapper o envoltorio de la clase char, para añadirle metodos y ciertas posibilidades más. por lo tanto tendras que hacer

Character.isLetter(cadena.charAt(indice));

Salu2!
1 respuesta