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;
}

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;
}
[/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 
[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;
}
[/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
[/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;
}
[/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
[/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…
