Eu estou tentando escrever um pedaço de código para mensagens de texto simular em um teclado de idade. 2 = a, b, c 3 = def etc.
Eu posso ler a corda e puxe o personagem, mas eu estou tentando desenvolver uma maneira elegante em Java de mapear o personagem para o número.
Eu poderia usar o Character.compare
. Mas eu vou ter de comparar o meu personagem com o alfabeto completo.
compareOneTwo = Character.compare(ch[r], 'a'); etc
Eu prefiro usar uma Boolean
função que compara três personagens ao mesmo tempo usando um "ou"
if(ch[r] = 'a'||'b'||'c') {
Mas eu estou lutando - com a obtenção deste ao trabalho.
Compreendo que este é básica e provavelmente um erro bobo, mas todos nós temos que começar em algum lugar ...
Qualquer ajuda será apreciada.
Você mesmo disse, você está tentando encontrar uma maneira de mapear os personagens para os números, então use um mapa!
Map<Character, Integer> characters = new HashMap<>();
characters.put('a', 2);
characters.put('b', 2);
characters.put('c', 2);
characters.put('d', 3);
...
characters.put('z', 0);
Integer number = characters.get('a');
System.out.println(number); // Will print '2'
A configuração inicial é um pouco mais de código, pois você tem que especificar o alfabeto inteiro, mas armazená-lo em uma variável estática e vai ser feito uma vez para toda a sua aplicação.
Isto vai certamente produzir os melhores desempenhos em termos de velocidade, e sobre o uso de memória, é apenas 26 caracteres e, como muitos inteiros, :) de modo insignificante
Outra vantagem é que é fácil de atualizar, se você precisa lidar com um novo personagem como *
, basta adicionar uma linha para o mapa e está feito!