Problema na conversão de tipos primitivos

3 respostas
D

Alguém saberia me dizer por que o código abaixo retorna ‘51’ ao invés de retornar ‘3’ ? public void teste() { String registro = "[telefone removido]"; 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]); }

3 Respostas

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.

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

ddso:

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

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?

D

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.

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

Criado 16 de junho de 2011
Ultima resposta 16 de jun. de 2011
Respostas 3
Participantes 2