Pegar cada letra de uma string e dar um valor

6 respostas
B

Oi Pessoal, sou novo aqui no forum. Agradeço qualquer ajuda de antemão.

Estou tentando pegar uma string, separa-la em letra por letra, e pra cada letra dar um valor.

ex: nome = Joao.

J=6
0=2
a=1
0=2

Consegui pegar uma String e separa-la num:

char[] letras; letras = name.toCharArray();

porem, nao consigo agora jogar a variavel letras num switch. da um erro.

alguem pode me ajudar?

6 Respostas

Marky.Vasconcelos

Até onde lembro Java começou a suportar até switchs com Strings diretamente, não vejo por que não aceitar char, teste o código abaixo:

int numValueOfChar(char c){
switch(c){
case 'a' : return 1;
case 'A' : return 2;
case 'b' : return 3;
default: throw new IllegalArgumentException("char is not a letter");
}
}
igor_ks

Popule um Map, acho que é melhor do que um monte de case
Algo do tipo:

Map<Character, Integer> map = new HashMap<Character, Integer>();
		map.put('A', 1);
		map.put('B', 2);
		map.put('C', 3);
		map.put('D', 4);
		
		String palavra = "ABCD";
		for (char letra : palavra.toCharArray()) {
			System.out.println(map.get(letra));
		}
B

Obrigado igor_ks

é isso mesmo que precisava, funcionou muito legal, porém não consigo exibir no txtField da GUI dentro do loop.

ele só mostra o ultimo valor se eu coloco no loop.

<blockquote>for (char letra : palavra.toCharArray()) {

txtResult.setText(map.get(letra));

}</blockquote>

tem como fazer todos os resultados aparecerem no txtField da GUI? tipo se a String for ABCD aparecer no field 1 + 2 + 3 + 4??

obrigado pela ajuda de todos pessoal, e descukpe o nivel tao iniciante.

Ruttmann

brugohb:
Obrigado igor_ks

é isso mesmo que precisava, funcionou muito legal, porém não consigo exibir no txtField da GUI dentro do loop.

ele só mostra o ultimo valor se eu coloco no loop.

<blockquote>for (char letra : palavra.toCharArray()) {

txtResult.setText(map.get(letra));

}</blockquote>

tem como fazer todos os resultados aparecerem no txtField da GUI? tipo se a String for ABCD aparecer no field 1 + 2 + 3 + 4??

obrigado pela ajuda de todos pessoal, e descukpe o nivel tao iniciante.

Você tem que adicionar os novos valores ao valor do textField. Toda vez que você usa o set, ele descarta o que tinha antes e define o valor novo.

Muda o seu setText para:

txtResult.setText(txtResult.getText()+map.get(letra))
ViniGodoy

Se os valores forem sequenciais, lembre-se que as letras já tem valores. Por exemplo:

System.out.println((int)'A'); //Imprime 65
System.out.println((int)'B'); //Imprime 66

Se você quiser que o A seja 0, o B seja 1, e assim por diante, é só subtrair 65 do valor do caracter.

Marky.Vasconcelos

ViniGodoy:
Se os valores forem sequenciais, lembre-se que as letras já tem valores. Por exemplo:

System.out.println((int)'A'); //Imprime 65
System.out.println((int)'B'); //Imprime 66

Se você quiser que o A seja 0, o B seja 1, e assim por diante, é só subtrair 65 do valor do caracter.

OU MELHOR basta subitrair ‘a’ do caractere.

int aAsZero = 'a' - 'a';
int bAsOne = 'b' - 'a';
Criado 9 de setembro de 2015
Ultima resposta 10 de set. de 2015
Respostas 6
Participantes 5