Fala galera,
Olha só estou com algumas dúvidas quanto ao seguinte problema. Tenho que atribuir valores de 1 a 26 às letras a a z e 27 a 54 às letras A a Z. Depois digitar uma palavra e verificar se a soma das letras dessa palavra é um número primo. Consegui verificar se o número é primo, mas estou com dificuldades para ler uma palavra e atribuir valores às letras. Se alguém tiver uma idéia de como fazer me ajudem por favor!!
Abraços
Palavras primas
3 Respostas
é só vc usar um map com com a chave o numero e letra.
^^
Tô com a mesma duvida do rapaz ali em cima,
num entendi o que voce quis dizer…
como assim map
Todo char é, na verdade, um número, definido na tabela unicode. Para os chars de letras sem acento e números, esse número é igual ao valor correspondente na tabela ascii.
O char A tem o valor 65, o char B tem o valor 66, e assim por diante. Letras minúsculas tem outros valores. Acentuadas também.
Para calcular, a forma mais fácil é converter o char em seu valor numériro, e subtrair 64. Dessa forma, a letra A valerá 1, B valerá 2, e assim sucessivamente.
char letra = 'A';
int valor = ((int)letra)-64;
System.out.println(valor);
Outra forma de associar uma letra a um número, é através de um Map. Procure o tópico do colega que disse que tem a mesma dúvida que você, já que tem um exemplo lá.
Para o seu caso específico, o seguinte método faz a conversão:
public int charParaNumero(char letra) {
if (letra >= 'a' && letra <= 'z')
return ((int)letra)-96; //Valor da letra 'a' é 97
if (letra >='A' && letra <= 'Z')
return ((int)letra)-38; //Valor da letra 'A' é 65. 65-38 = 27.
return 0; //Outros caracteres serão desconsiderados.
}