Contagem de letra em uma frase

Fala Pessoal!!

tô precisando de uma ajudinha!!

Preciso fazer um código que solicite que seja digitada uma frase, depois solicite uma letra e mostre quantas vezes a letra aparece na frase.

Gostaria de saber como eu vou fazer a contagem desta letra na frase digitada.

sei que posso fazer com o pacote java.lang mas não consegui achar nada!!!

Valeu!!

Abs…

e_andrade

tenta isso:

public int contaLetra(String str, char letra){
 int count = 0;
 int x;
 while ((x = str.indexOf(letra + "")) != -1){
  str = str.substring(x + 1);
 }
 return count;
}

Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:

Valeu pela ajuda pessoal!!

Não imaginava que viria tão depressa!!!

abs…

e_andrade

[quote=“JavaTeco”]Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:[/quote]

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:

[quote=“Felipe”][quote=“JavaTeco”]Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:[/quote]

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:[/quote]

Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    for (int indice = 0; indice < s.length(); indice++) {
        if (s.charAt(indice) == c) contador++;
    }
    return contador;
  }

Assim fica melhor ainda… hehehehehehehhe

[quote=“JavaTeco”][quote=“Felipe”][quote=“JavaTeco”]Uma outra solução:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    char[] palavra = s.toCharArray();
    for (int indice = 0; indice < palavra.length; indice++) {
      contador += (palavra[indice] == c) ? 1 : 0;
    }
    return contador;
  }

:wink:[/quote]

fica mais rapido se vc trocar essa parte:

contador += (palavra[indice] == c) ? 1 : 0;

por isto:

if (palavra[indice] == c) contador++;

pq em ambos esta se fazendo a comparacao, mas no segundo caso vc esta avitando atribuicoes desnecessarias :wink:[/quote]

Vc tem razão… fiz na correria… mas então melhorei mais um pouco, e adicionei sua proposta:

public static int contaCaractere (String s, char c) {
    int contador = 0;
    for (int indice = 0; indice < s.length(); indice++) {
        if (s.charAt(indice) == c) contador++;
    }
    return contador;
  }

Assim fica melhor ainda… hehehehehehehhe[/quote]

com o array de char fica mais rapido, apesar de gastar um pouco mais de memoria, evita MUITAS chamadas de metodo, teve um prog q eu fiz uma vez, q ele contava qntas linhas tinha um texto (qntos caracteres ‘\n’), dai da primeira vez botei desse jeito… com um arquivo de 13kb, leva um 30 a 40 segundos pra contar as linhas, depois alterei o prog pra como eu postei, pra calcular as linhas do mesmo arquivo de 13kb, foi instantaneo 8O

Legal saber disso… Valeu mesmo…

:wink: