Criei um código em java no qual a ideia básica dele é de que vc vai escolher uma palavra e uma letra e o código te dirá quantas dessa letra terá na palavra. Ex: (abacaxi, a) o programa deveria retornar 3. Porém por algum motivo o programa está retornando o número de letras na palavra inteira, sem distinguir entre o A e o resto. Se puderem me ajudar…
O código está abaixo:
function contaLetras(string, letra) {
let palavra = string;
let tamanhoP = palavra.length;
let contador = 0;
for (i = 0; i < tamanhoP; i++) {
if (letra = palavra[i]) {
contador = contador + 1;
}
}
return contador
}
contaLetras("abacaxi","a");
Uma dica, evite utilizar palavras reservadas(string) como nome de variável. Embora o Javascript permita isso em alguns casos, não é uma boa prática e você certamente irá se confudir ao migrar para uma linguagem fortemente tipada(ex.: Typescript, Java, C# e etc.)
Obs: em TypeScript, string é um tipo. Em Java não, então uma variável chamada string não dá problema nenhum. Mas de forma geral, concordo que em alguns casos pode ficar confuso mesmo. Só que o meu argumento principal para mudar o nome é escolher algo que seja mais claro. Uma string pode ter qualquer coisa (não necessariamente um texto que faz sentido, pode ter qualquer caractere), então o parâmetro poderia se chamar texto ou palavra, por exemplo, deixando mais claro o que a função espera (claro que aí depende do contexto pra escolher um nome mais adequado).
Complementando o que já foi dito acima (usar == ou === em vez de =), para que esse monte de variáveis redundantes e desnecessárias? Poderia ser assim:
function contaLetras(palavra, letra) {
let contador = 0;
for (let i = 0; i < palavra.length; i++) {
if (letra === palavra[i]) {
contador++;
}
}
return contador;
}
function contaLetras(palavra, letra) {
let contador = 0;
for (const caractere of palavra) {
if (letra === caractere) {
contador++;
}
}
return contador;
}