Pegar número de uma String [RESOLVIDO]

6 respostas
leo.alvesneuwald

Olá!

Possuo uma String [CPF removido].
Gostaria de pegar somente o valor [telefone removido].
Tentei da seguinte forma e não consegui:

c.setCpf(Integer.valueOf(txtCpf.getText()).intValue());

Alguem pode me ajudar?

Erro apresentado:
java.lang.NumberFormatException: For input string: “[CPF removido]”

Muito Obrigado!

6 Respostas

M

use:

c.setCpf(Integer.parseInt(txtCpf.getText().replace(".","").replace("-","")));
S

Ao invés de fazer [CPF removido], não dá pra fazer [telefone removido] ??? Pq daí não precisa converter nada.

leo.alvesneuwald

É que eu criei uma JFormattedTextField no Netbeans para pegar o valor de CPF e coloquei a mascara ###.###.###-##.

Mustang89, infelizmente continua chamando a Exception, mas agora sem os “.” e “-”.

java.lang.NumberFormatException: For input string: “11111111111111”

M

Isso é porque o valor do CPF passa o valor do numero inteiro

int vai até 2,147,483,647

como você pode ver no site:
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

E eu acho um desperdicio muito grande memoria guardar o CPF como valor numerico

Se eu fosse você trabalharia com ele como String mesmo, pois acaba economizando um bom espaço de memoria

Espero ter ajudado.

PS: Desculpe por não ter notado antes que o valor de um CPF passaria o valor de um int

leo.alvesneuwald

Valeu a dica Mustang89 =]

E

Cada caracter ocupa 2 bytes, e um objeto vazio já ocupa outros 16 bytes. Ou seja, um CPF (que tem 14 caracteres) ocuparia 28 + 16 = 44 bytes, que na verdade acabam ficando 48 porque normalmente objetos devem ficar em um endereço múltiplo de 8. Um long ocupa exatamente 8 bytes, nem mais nem menos. Então…

(Na verdade uma string vazia já ocupa mais bytes ainda. Esqueci que uma String é na verdade um encapsulamento para um char[], que é um outro objeto ainda (ou seja, mais 16 bytes nessa história). Só que arrays também têm de armazenar seu comprimento em um int (ou seja, mais 4 bytes). Ou seja, nem são 44 mas sim 44 + 16 + 4 = 64 bytes nessa história (isso na melhor das hipóteses; preciso ver experimentalmente se não acaba ocupando mais espaço ainda.)

Criado 3 de junho de 2010
Ultima resposta 3 de jun. de 2010
Respostas 6
Participantes 4