Problema na conversão de tipos primitivos

Alguém saberia me dizer por que o código abaixo retorna ‘51’ ao invés de retornar ‘3’ ? public void teste() { String registro = "93847568593"; int[] numeros = new int[11]; for (int i = 0; i < 11; i++) { numeros[i] = (int) (registro.charAt(i)); } System.out.println("numero digitado " + numeros[10]); }

Quando vc faz o registro.charAt(i) da String, vc está pegando o valor no formato de char (vc está pegando a posição da tabela Unicode que representa este valor).

Se você olhar na tabela Unicode ou ASCII o valor do número 3 está na posição 51, por isso ele guardou dentro do vetor de números o valor 51.

Uma das formas que vc pode converter este número 51 (posição da tabela Unicode) para o valor 3:

numeros[i] = Character.digit(registro.charAt(i), 10);

[quote=ddso]
numeros[i] = (int) (registro.charAt(i));
[/code][/quote]

descobri: o método charAt retorna um char, que convertido em int, retorna a posição dele na tabela ASC!

alguem tem algo a acrescentar?

[quote=rsakurai]Quando vc faz o registro.charAt(i) da String, vc está pegando o valor no formato de char (vc está pegando a posição da tabela Unicode que representa este valor).

Se você olhar na tabela Unicode ou ASCII o valor do número 3 está na posição 51, por isso ele guardou dentro do vetor de números o valor 51.
[/quote]

obrigado! publicamos quase ao mesmo tempo a resposta! rs… mas a sua resposta foi mais esclarecedora ainda! vlw