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",15025030050 ); // 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 15025030050 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
Errata : leia-se tipo LONG
Queria pergutar algo…
E se o cpf fosse o seguinte: 00536556398.
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…
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 -> 15025030050 ?
Agradece,
Max Carvalho
[quote=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 -> 15025030050 ?
Agradece,
Max Carvalho [/quote]
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”,15025030050 );
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
…
[quote=71C4700]Queria pergutar algo…
E se o cpf fosse o seguinte: 00536556398.
Como saber diferenciar que os ZEROS não serão conciderados?
Veja se funciona…[/quote]
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
00005639812
12345678900