Utilizando a classe Collator

Publicado por Mariana Ribeiro Mendes (última atualização em 01/10/2012)

[ Hits: 4.344 ]

Download LetrasCollator.java




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.

  



Esconder código-fonte

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();

    }

}

Scripts recomendados

Funções matemáticas no plano cartesiano

aplicação simples em Java

Calculadora em Java

Números Perfeitos com Java

Exemplo básico da biblioteca Swing


  

Comentários
[1] Comentário enviado por facb69 em 01/10/2012 - 10:30h

Parabéns pela publicação, Mariana. Compartilhar conhecimento é uma das atitudes mais legais de um ser humano.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts