Integer.parseInt de String com zeros a esquerda

7 respostas
M

Pessoal, como fazer um parseInt de String com zeros a esquerda?

Exemplo:

int numero = Integer.parseInt("00060");

Essa instrução, pra mim, está lançando uma Exception.

Não sei como solucionar. Se alguém puder ajudar…

[]s.

7 Respostas

JM4X

Estranho… aqui não tive problema algum, to usando jdk1.6.0_23.

Confere ai se num funciona mesmo…

carolino

cara…
copiei e colei seu código aki… mandei rodar
e funcionou certinho…

Mas… que execeção vc ta tomando?

Adelar

Certeza que é esta string mesmo que você está recebendo? Não tem algum espaço junto, por exemplo?

[]'s

d34d_d3v1l

tem uma solução sim… simples…

DecimalFormat formatoDes = new DecimalFormat("0000000.00");
        String tot = formatoDes.format(total);

não esqueça de importar :

import java.text.DecimalFormat;
Eric_Yuzo

MWAdriano:
int numero = Integer.parseInt("00060");
Essa instrução, pra mim, está lançando uma Exception.

Neste código em si, não estou vendo nenhum problema, mas dependendo do número que passar, pode gerar um NumberFormatException, pois um inteiro começado por zero representa um número octal. Portanto se o número com zeros à esquerda tiver os dígitos 8 ou 9 (que não estão presentes no sistema octal) em seu conteúdo, a exceção será lançada.

Uma forma de resolver este problema é passar a base para o segundo parâmetro do parseInt:

int numero = Integer.parseInt("00060", 10); // Conversão de String para número de base 10
JM4X

[quote=Eric Yuzo]

MWAdriano:
int numero = Integer.parseInt("00060");
Essa instrução, pra mim, está lançando uma Exception.

Neste código em si, não estou vendo nenhum problema, mas dependendo do número que passar, pode gerar um NumberFormatException, pois um inteiro começado por zero representa um número octal. Portanto se o número com zeros à esquerda tiver os dígitos 8 ou 9 (que não estão presentes no sistema octal) em seu conteúdo, a exceção será lançada.

Uma forma de resolver este problema é passar a base para o segundo parâmetro do parseInt:

int numero = Integer.parseInt("00060", 10); // Conversão de String para número de base 10

o método Integer.parseInt(String s) retorna o valor inteiro representado pelo argumento na forma decimal, ou seja, mesmo com 8 ou 9 depois do(s) zero(s) não lançaria exceção.

^^

acho que o problema da exceção foi outro…
mas acho que o criador do tópico já resolveu, pq ele sumiu.
ahuahuauhs

[]’ a todos.

Eric_Yuzo

Tem razão. Testei aqui e vi que não deu problema. Mas já apanhei pra esse erro em updates mais antigos do JDK.

Criado 15 de fevereiro de 2011
Ultima resposta 16 de fev. de 2011
Respostas 7
Participantes 6