Utilizando a classe Collator
Publicado por Mariana Ribeiro Mendes (última atualização em 01/10/2012)
[ Hits: 7.693 ]
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();
}
}
Calculadora básica e simples de entender
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Consertando o áudio com estalos e interrupções no Pipewire
Fiz uma pergunta no fórum mas não consigo localizar (6)
Servidor Ubuntu 24.04 HD 500 não tenho espaço na \home\adminis... (4)
Dá para criar um bom jogo usando a linguagem de programação C? (1)
E como programar um sistema operacional inspirado no próprio linux usa... (3)









