Convertendo string para int[RESOLVIDO]

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");
		}
	}

}

grato

Oi!

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.

Abraços.

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:

String cnpjRegistro1 =" 04780793000160 ".trim(); if(cnpjRegistro1.matches("\d+")) { BigInteger cnpjRegistro = new BigInteger(cnpjRegistro1); System.out.println(cnpjRegistro); }

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. :slight_smile:

P.s: o “\d+” é equivalente ao “[0-9]+”.

Abraços.