(resolvido) duvida com campo long

2 respostas
jonasjgs2

boa tarde a todos...

observem a classe abaixo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package teste0001;

/**
 *
 * @author Admin
 */
public class ClasseCadastro {
    private long codigo;
    private String razao;
    private long cgc;

    public long getCodigo() {
        return codigo;
    }

    public void setCodigo(long codigo) {
        this.codigo = codigo;
    }

    public String getRazao() {
        return razao;
    }

    public void setRazao(String razao) {
        this.razao = razao;
    }

    public long getCgc() {
        return cgc;
    }

    public void setCgc(long cgc) {
        this.cgc = cgc;
    }
}

observem esta outra classe:

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package teste0001;

/**
*
* @author Admin
*/
public class ClasseTeste {
public static void main(String[] args) {
ClasseCadastro cadastro = new ClasseCadastro();
cadastro.setCodigo(1);
cadastro.setRazao("EMPRESA EXEMPLO S.A");
String s="07380134000124";
cadastro.setCgc(Long.parseLong(s));
System.out.println(cadastro.getCgc());
cadastro.setCgc(07380134000124); // LINHA COM A DUVIDA
}
}

observem que na classeteste..

eu tenho uma String s que tem um cgc: 07380134000124
eu pego esta string e consigo guardar ela sem nenhum problema na linha: cadastro.setCgc(Long.parseLong(s));
e logo em seguida dou ate println com o valor: System.out.println(cadastro.getCgc());
ate ai sem problema
porem no netbeans a linha: onde eu estou tentando setar diretamente o cgc me da o erro: "integer long to larger"

como se explica se na aplicacao esta funcionando normalmente.... porque o netbeans acusa este erro:
se ao executar a aplicacao sem a linha onde o netbeans esta reclamento o java trata normalmente sem nenhuma excessao?
eu sei que esta mensagem de erro esta me dizendo que um campo long para o valor esta estourado... mas porque na execucao
ele nao da erro: e funciona normalmente:

se alguem poder me tirar esta duvida agradeco desde ja:

2 Respostas

E
cadastro.setCgc(07380134000124); // LINHA COM A DUVIDA

Você tem 2 problemas aí.

  1. Como a constante começa por zero, ela é entendida pelo Java como sendo um número em octal, portanto os dígitos 8 e 9 são inválidos. Não ponha zeros à esquerda em constantes numéricas dentro do seu programa a menos que você saiba o que está fazendo…

Um exemplo:

System.out.println (010 == 8);

O código acima imprime “true” em vez de “false”. É que o número “010” é entendido como um número octal, e se você aprendeu mudança de base, 010 em octal é 8 em decimal.

  1. Além disso, se você tem uma constante numérica, ela deve ser terminada com “L” para usar com números muito grandes (ou seja, acima de dois bihões e uns quebradinhos).

No seu caso:

cadastro.setCgc(7380134000124L);
jonasjgs2

resolvido— obrigado

Criado 25 de março de 2013
Ultima resposta 25 de mar. de 2013
Respostas 2
Participantes 2