Armazenar CPF em campo númerico

5 respostas
M

Pessoal,

Tenho a seguinte classe -> Cliente.java

public class Cliente {

private String clienteNome;
  private long clienteCpf;
  .
  . 
  .

}

e a seguinte classe para teste da classe -> TestaCliente.java

public class TestaCliente {

      public static void main(String[] args) {

          Cliente cliente1 = new Cliente("João Alfredo",[telefone removido] ); // não importa se o CPF eh valido

      }
      .
      . 
      .
} 
           

Quando tento instanciar o objeto da classe cliente usando a linha acima, aparece o seguinte erro :

 "The literal  [telefone removido] of type int is out of range".

 Enfim, qual o tipo de dado em Java me permitiria armazenar o CPF apenas como número sem estourar a capacidade ?
 Tentei usar o tipo LOGN, que salvo engano meu comporta até 64 bits, mas ainda não foi suficiente.

 Agradece,

 Max Carvalho

5 Respostas

M

Errata : leia-se tipo LONG

71C4700

Queria pergutar algo…

E se o cpf fosse o seguinte: [telefone removido].

Como saber diferenciar que os ZEROS não serão conciderados?

Quanto a sua questão acredito que Long resolva, pios o seu valor maxio é 9223372036854775807.

Tenta colocar assim a chamada de seu construtor:

new Cliente("João Alfredo",15025030050L );

Veja se funciona…

M

71C4700 ( que nick !!! ),

Funcionou.
Modifiquei o código acima para:


new Cliente(“João Alfredo”,15025030050L );

E deu certo, só que ainda fiquei com a seguinte dúvida :

Uma variáve inteira normal comportaria o valor -> [telefone removido] ?

Agradece,

Max Carvalho

Lavieri

maxcarvalho:
71C4700 ( que nick !!! ),

Funcionou.
Modifiquei o código acima para:


new Cliente(“João Alfredo”,15025030050L );

E deu certo, só que ainda fiquei com a seguinte dúvida :

Uma variáve inteira normal comportaria o valor -> [telefone removido] ?

Agradece,

Max Carvalho

um long sim, um int não

quando vc escreve valores literias esta escrevendo um int e por isso que

new Cliente(“João Alfredo”,[telefone removido] );

sem o L não complia, pq ele ve aquilo como um inteiro, e esse valor não cabe em um inteiro

quando vc escreve

new Cliente(“João Alfredo”,15025030050L );

esta avisando, que o valor que esta escrevendo é um long, e ai ele cabe dentro

Lavieri

71C4700:
Queria pergutar algo…

E se o cpf fosse o seguinte: [telefone removido].

Como saber diferenciar que os ZEROS não serão conciderados?

Veja se funciona…

se um long hora, então não há zeros a esqueda, e um cpf tem 11 digitos, sempre, portanto se menor que 11, é so colocar os zeros a esquerda…

zeros a esqueda são conciderados pelo compilador com onumeros binarios ou octais (não me lembro exatamente agora)

um exemplo de exebição

long teste = 5639812L; long teste2 = 12345678900L; System.out.printf("%1$011d\n",teste); System.out.printf("%1$011d\n",teste2);
resultado

[telefone removido] [telefone removido]

Criado 13 de maio de 2009
Ultima resposta 14 de mai. de 2009
Respostas 5
Participantes 3