Convertendo string para int[RESOLVIDO]

3 respostas
juliocesarsrosa

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

3 Respostas

nel

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.

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???

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

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

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

Abraços.

Criado 28 de julho de 2011
Ultima resposta 28 de jul. de 2011
Respostas 3
Participantes 2