Utilizando a classe Collator
Publicado por Mariana Ribeiro Mendes (última atualização em 01/10/2012)
[ Hits: 7.617 ]
Este algoritmo conta quantas vogais e quantas consoantes há em uma frase de 80 caracteres, considerando ç/Ç e vogais acentuadas.
Para resolver o problema com comparações de vogais acentuadas e o ç/Ç eu utilizei a classe Collator (java.text.Collator), saiba mais aqui:
http://docs.oracle.com/javase/7/docs/api/java/text/Collator.html
Basicamente, a classe Collator é um comparador de Strings sensitivos à localização.
Neste algoritmo eu a utilizei da forma mais simples possível, com sua localização Default.
P.S: Agradecimento especial ao rei_astro, que me deu dicas valiosas (que me levou à classe Collator) e puxões de orelha que se transformaram numa melhora substancial do código em relação à alguns métodos que prendiam a execução.
Espero que gostem e lhes seja útil.
Qualquer dúvida ou crítica, sintam-se livres para me contatar.
Abraços.
import java.text.Collator;
import java.util.Scanner;
public class LetrasCollator {
static Collator collator = Collator.getInstance();
public static boolean testeConsoante(String letra){
if (collator.compare(letra, "ç") == 0){
return true;
}
return false;
}
//verifica as vogais com acento utilizando o método compare() da classe Collator
public static boolean testeVogal(String letra){
switch (letra) {
case "á":
if (collator.compare(letra, "á") == 0){
return true;
}
case "à":
if (collator.compare(letra, "à") == 0){
return true;
}
case "â":
if (collator.compare(letra, "â") == 0){
return true;
}
case "ã":
if (collator.compare(letra, "ã") == 0){
return true;
}
case "é":
if (collator.compare(letra, "é") == 0){
return true;
}
case "è":
if (collator.compare(letra, "è") == 0){
return true;
}
case "ê":
if (collator.compare(letra, "ê") == 0){
return true;
}
case "ẽ":
if (collator.compare(letra, "ẽ") == 0){
return true;
}
case "í":
if (collator.compare(letra, "í") == 0){
return true;
}
case "ì":
if (collator.compare(letra, "ì") == 0){
return true;
}
case "ó":
if (collator.compare(letra, "ó") == 0){
return true;
}
case "ò":
if (collator.compare(letra, "ò") == 0){
return true;
}
case "ô":
if (collator.compare(letra, "ô") == 0){
return true;
}
case "õ":
if (collator.compare(letra, "õ") == 0){
return true;
}
case "ú":
if (collator.compare(letra, "ú") == 0){
return true;
}
case "ù":
if (collator.compare(letra, "ù") == 0){
return true;
}
}
return false;
}
//verifica as vogais sem acento
public static boolean verificaVogal(char v) {
switch (v) {
case 'a':
return true;
case 'e':
return true;
case 'i':
return true;
case 'o':
return true;
case 'u':
return true;
}
return false;
}
//faz a contagem das letras
public static String contaLetras(String frase) {
int vogal = 0, consoante = 0;
for (int cont = 0; cont < frase.length(); cont++) {
//verifica se determinada letra está entre 'a' e 'z'
if (((frase.toLowerCase().charAt(cont) >= 'a') && (frase.toLowerCase().charAt(cont) <= 'z'))) {
//verifica se é uma vogal sem acento
if (verificaVogal(frase.toLowerCase().charAt(cont))) {
vogal++;
} else {
consoante++;
}
} else {
Character letra = frase.charAt(cont);
String l = letra.toString();
//verifica se é um ç/Ç
if (testeConsoante(l.toLowerCase())){
consoante++;
}
//verifica se é uma vogal com acento
if (testeVogal(l.toLowerCase())){
vogal++;
}
}
}
return "Vogais: " + vogal + " Consoante: " + consoante;
}
public static void inicio() {
String frase, teste;
Scanner in = new Scanner(System.in);
do{
do {
System.out.println("Entre com a frase, por favor. Não utilize acentos e não ultrapasse o limite de 80 caracteres");
frase = in.nextLine();
if (frase.length() > 80) {
System.out.println("A frase contém mais que 80 caracteres. ");
}
} while (frase.length() > 80);
System.out.println(contaLetras(frase));
do {
System.out.println("Deseja fazer outro teste? [s/n]");
teste = in.nextLine();
if (teste.toLowerCase().equals("s") || teste.toLowerCase().equals("n")) {
if (teste.toLowerCase().equals("n")) {
System.out.println("Fim do programa...");
}
} else {
System.out.println("Informação Inválida! Digite apenas 's' ou 'n'.");
}
} while (!((teste.toLowerCase().equals("s")) || (teste.toLowerCase().equals("n"))));
} while(!(teste.toLowerCase().equals("n")));
}
public static void main(String[] args) {
inicio();
}
}
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)
PIP3 - erro ao instalar módulo do mariadb para o Python (9)









