Formatar String para numerico

15 respostas
C

Boa Tarde galera!!!

Eu estou precisando de uma ajuda

Preciso converte uma String para numerico , so que qnd eu faço isso o numerico perde as casas a esquerda,

por exemplo:

String aux = 0001;

int num = Integer.parseInt(aux);

System.out.println(num); // imprime 1 e nao 0001

Tem como alguem me dar uma força, eu ja tentei usar o NumberFormat e DecimaFormat, so que nao rolou, continua a mesma coisa!

Valew

15 Respostas

oddy.silva

Boa tarde amigo.
Ao invés de integer, tente um short.

Short.parseShort(string);

Flw

T

Use String.format. Exemplo:

String s = "001234";
int n = Integer.parseInt (s);
System.out.println (String.format ("%07d", n); // deve imprimir 0001234 ou seja, 7 casas com zeros à esquerda
C

Eu ja tentei tb usar tanto short quanto o long, so que nao deu certo tb!!!

C

thingol:
Use String.format. Exemplo:

String s = "001234"; int n = Integer.parseInt (s); System.out.println (String.format ("%07d", n); // deve imprimir 0001234 ou seja, 7 casas com zeros à esquerda

thingol, eu preciso do numero em si, pq eu vou usar esse numero pra fazer uma busca na base de dados.

alanbrasil1984

mais meu brother um numero 0001 não é um numero com casa decimal…

vc tem que indicar com um “.” pq senão não será reconhecivel…

C

alanbrasil1984:
mais meu brother um numero 0001 não é um numero com casa decimal…

vc tem que indicar com um “.” pq senão não será reconhecivel…

é o seguinte eu estou trabalhando com Adabas, e o que rola uma das “chaves primarias” da tabela que eu to trabalhando é um numerico com 4 casas.
ai o que rola, eu tenho um campo na pagina de pesquisa em que o usuario escolhe o qual tipo da opção que faz referencia ao codigo da “chave primeira”, so que esta em String, ai preciso passar para numerico com 4 casas em Java para poder fazer a pesquisa, dai o meu problema, eu nao arrumei uma forma de converter o string que tem o valor com 3 zeros e 1 digito,como “0001”,“0002”,“0003”,“0004”,“0005”,“0006”, e etc, para numerico com quatro digitos, como 0001,0002,0003.

R

Cara no caso se vc realmente precisa das casas a esqueda vc não vai conseguir com um numero vc terá que colocar na mão mesmo, estou te encaminhando uma função que fiz agora pra adicionar os zeros novamente depois do parser.

Ai vai:

public static String zerosEsquerda(String numero){
		
		int i = 0;
		int index = 0;
		
		while(i < numero.length()){
			if(numero.substring(i,++i).equals("0")){
				index++;
			}else{
				break;
			}
		}
		
		Integer valor = Integer.parseInt(numero);
		index += valor.toString().length();
		String valorFinal = String.format("%0"+index+"d",valor);
		
		return valorFinal;
		
	}

[]'s

T

Qual é a diferença do seu salário se ele for escrito com

double d = 4000.00;

ou

double d = 00004000.00;

?

Acho que você está confundindo um número (que não tem zeros à esquerda) com sua representação decimal, que é uma string (e pode ter zeros à esquerda ou não). Para o que você quer, você precisa converter o número 4 para uma string “0004”. OK?

E para converter e pôr zeros à esquerda, basta usar String.format, conforme lhe indiquei.

G

Boa Tarde,

nossa… se é no formato numérico, como 0001 pode ser diferente de 1?

só pra vc tentar, pq vc não formata a String como o thingol disse e quando fizer a consulta sql, não coloca as aspas nela.

flw.

B
gujuser:
Boa Tarde,

nossa... se é no formato numérico, como 0001 pode ser diferente de 1?

só pra vc tentar, pq vc não formata a String como o thingol disse e quando fizer a consulta sql, não coloca as aspas nela.

flw.


:?:

Como assim diferente?
String s1 = "0001";
String s2 = "1";

int num1 = Integer.parseInt(s1);
int num2 = Integer.parseInt(s2);

System.out.println(num1 == num2); // true
C

gujuser:
Boa Tarde,

nossa… se é no formato numérico, como 0001 pode ser diferente de 1?

só pra vc tentar, pq vc não formata a String como o thingol disse e quando fizer a consulta sql, não coloca as aspas nela.

flw.

Ai que ta, no Adabas da faz diferença 1 ou 0001!
A formatação que todo mundo passou no final de tudo eu termino com uma String, so que eu preciso termina com um numerico.

oddy.silva

Pelo que me parece, tipos inteiros de maior ou menor precisão, não consideram 0 a esquerda. Como o amigo acima falou, não há diferença entre 0004 ou 4.
Eu tava pensando, acho que o legal seria você criar um array e, usando o método substring, ir quebrando cada zero desse e passar pra cada posicao desse
array. Depois você só precisaria tratar isso para que ele armazenasse no banco de dados.

Tenta fazer isso.

G

Como assim diferente?
view plaincopy to clipboardprint?

  1. String s1 = “0001”;
  2. String s2 = “1”;
  3. int num1 = Integer.parseInt(s1);
  4. int num2 = Integer.parseInt(s2);
  5. System.out.println(num1 == num2); // true

Boa tarde,

pois é, a minha pergunta foi justamente essa.

Ae, vc tentou fazer como eu falei?
Como vc faz pra procurar o que vc quer? Manda um exemplo ae.

flw.

oddy.silva

Só pra exemplificar o que eu disse.

String str = "01234";
      String[] stringArray = new String[5];

      for (int x = 0 ; x<5 ; x++){
          stringArray [x] = str.substring(x, x+1);
          
      }

Daí, depois você trata cada elemento do array e manda pro seu banco.
Lembrando que no lugar de 01234 pode ser 00001. 01234 foi só pra ficar melhor de entender. Flw.

B

Certeza que o campo do banco é numérico? O JDBC deveria fazer essa conversão para o tipo usado no banco automaticamente.

Criado 6 de abril de 2009
Ultima resposta 6 de abr. de 2009
Respostas 15
Participantes 7