Galera estou comm uma duvida bem basica porem me deixou com a pulga atras da orelha tenho que fazer uma conversao bem simples…
de string para inteiro porem me deparei com uma situação meio estranha… devido ao numero de caracteres que possui a minha string ele da number format exception
porem quando diminuo o tamanho da string ele deixa converter normalmente… como faço para converter para inteiro uma string de tal tamanho?
estou convertendo por causa do zero a esquerda e por causa de um possivel espaço … sei do trim e talz… mais meu chefe pediu que fizesse assim…
public class Teste {
public static void main(String[] args) {
String cnpjRegistro ="04780793000160";
String cnpjEmpresaLogada = "004780793000160";
Integer.parseInt(cnpjRegistro);
System.out.println(cnpjRegistro);
Integer.parseInt(cnpjEmpresaLogada);
System.out.println(cnpjEmpresaLogada);
if (cnpjRegistro!= cnpjEmpresaLogada) {
System.out.println("Diferente");
}else{
System.out.println("Igual");
}
}
}
Devido ao espaço de armazenamento do Inteiro (Integer).
Possívelmente o número está excedendo o espaço alocado e gerando a exceção.
Se desejas passar para um número, transforme e um Long.
Sim converti para big decimal… e foi normalmente… mas esse espaço realmente tenho que tirar manualmente com trim neh???
pq se deixo a string com o espaço da erro… tem algum jeito que nao precise dar trim???
public static void main(String[] args) {
String cnpjRegistro1 ="04780793000160";
String cnpjEmpresaLogada1 = "004780793000160";
BigInteger cnpjRegistro = new BigInteger(cnpjRegistro1);
System.out.println(cnpjRegistro);
BigInteger cnpjEmpresaLogada = new BigInteger(cnpjRegistro1);
System.out.println(cnpjEmpresaLogada);
if (cnpjRegistro!= cnpjEmpresaLogada) {
System.out.println("Diferente");
}else{
System.out.println("Igual");
}
}
[quote=juliocesarsrosa]Sim converti para big decimal… e foi normalmente… mas esse espaço realmente tenho que tirar manualmente com trim neh???
pq se deixo a string com o espaço da erro… tem algum jeito que nao precise dar trim???
[code]
public static void main(String[] args) {
String cnpjRegistro1 ="04780793000160";
String cnpjEmpresaLogada1 = "004780793000160";
BigInteger cnpjRegistro = new BigInteger(cnpjRegistro1);
System.out.println(cnpjRegistro);
BigInteger cnpjEmpresaLogada = new BigInteger(cnpjRegistro1);
System.out.println(cnpjEmpresaLogada);
if (cnpjRegistro!= cnpjEmpresaLogada) {
System.out.println("Diferente");
}else{
System.out.println("Igual");
}
}
[/code][/quote]
Oi!
Sim, o BigInteger (igual seu código) também resolve seu problema e aloca mais espaço, inclusive.
Você acha que isso aqui " 15 " é um número ou uma String? Na minha humilde opinião, é String.
O que seu chefe quer que seja transformado em número e não que você não use métodos para fazer a conversão corretamente.
Sem o método trim(), só manualmente, você mesmo criar uma método para remover os espaços em branco do inicio e/ou fim da String, mas para que recriar a roda?
Sugestão:
Removi possíveis espaços em branco no inicio e fim da String e após isso, fiz uma validação.
o “\d+” é simplesmente um regex que verifica se a String em questão possui somente digitos.