Pegar cada letra de uma string e dar um valor

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?

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

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

[code]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));
	}[/code]

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.

[quote]for (char letra : palavra.toCharArray()) {
txtResult.setText(map.get(letra));
}[/quote]

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.

[quote=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.

[quote]for (char letra : palavra.toCharArray()) {
txtResult.setText(map.get(letra));
}[/quote]

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.[/quote]

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))

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.

[quote=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.[/quote]

OU MELHOR basta subitrair ‘a’ do caractere.

int aAsZero = 'a' - 'a';
int bAsOne = 'b' - 'a';