Formatar inteiros

Ola a todos.
estou com um problema q nao sei se posso resolver em JAVA…

meu sistema vai fazer consultas no DB2 q estah num mainframe…a comunicacao entre meu sistema e o banco serah atraves de um comunicador proprio…

o problema eh: o campo codigo no banco tem 4 digitos…e OBRIGATORIAMENTE os 4 digitos precisam ser preenchidos…

como fazer em JAVA q um inteiro receba zeros a esquerda??
por ex, se eu tiver o codigo 10, como passa-lo p/ 0010 em java??

alguem pode me ajudar??

obrigado

NumberFormat formatter = new DecimalFormat(“0000”);
String s = formatter.format(seuCodigo);

1 curtida

eu vi esse formatador…

mas ele retorna uma String…preciso do numero em integer…

Para converter String em int:

int var = Integer.parseInt(“suaString”);

eu sei como converter string p/ int, Marques…

mas preciso do numero no formato XXXX numa variavel inteira…nao numa string…

Ave cara, ou eu não entendi nada ou é vc q não entendeu…
Tipo, q diferença faz ? É só vc usar o q o cara falou e armazenar o valor numa String e logo na linha de baixo já converter p/ Inteiro e armazenar na variável inteiro.
Não existe nada impossível de se fazer em Java

vc q nao entendeu mesmo…

em rotinas COBOL p/ armazenar no banco em mainframe, TODOS os digitos devem ser preenchidos p/ serem inseridos…
entao preciso de um numero tipo 0020 p/ inserir no banco…

qdo converto p/ inteiro, fico apenas com 20…e isso nao serve p/ mim…

Opa,

Me desculpe, realmente eu não havia entendido corretamente sua pergunta.
Infelizmente eu sou iniciante e não sei como fazer isso q vc quer. Pode ser q seja necessário desenvolver uma rotina própria p/ isso. O problema é p/ desenvolver isto, já q tipos inteiros em Java não começam c/ 0 pelo q eu sei. Mas como já disse nada é impossível de se fazer c/ Java

Um abraço

Franklin

para o que você quer, você precisa é da representação String do numero mesmo.

um int eh uma primitiva em java
uma String eh uma classe/instancia = objeto.
se voce quer possuir um numero, voce pode armazena-lo numa int. o mesmo que um integer em vb, nao sei como eh em Cobol. em C por exemplo t ambem eh um int.
para trabalhar com digitos a esquerda voce precisa, em todas as linguages q citei, formatar o numero para UMA STRING. isso acontece devido a arquitetura das nossas maquinas. uma int em java tem 32 bits, que sao COMPLETAMENTE USADOS para representar essa int. nao tem espaco extra pra um 0 a esquerda.
se vc converte num formato para String voce vai ter os 0 a esquerda pq a String eh uma array de caracteres (internamente)
a resposta eh que nao existe solucao para o que voce procura
ou voce usa um objeto String que represente o numero temporariamente para a impressao/manipulacao ou passa o int pra frente e trata ele depois. mas sempre tera que ser com string.

o mesmo ocorre com o c e o vb, voce precisa transformar em string… sem escapatorias… eh a maquina, eh a vida (sem querer dizer q a maquina eh a minha vida)

gui

traduzindo o guilherme:

int i nunca vai imprimir 0020 (a partir da versao 1.5 do java vai dar)
entao voce precisa usar como String mesmo, e coloca no SQL uma String ao inves do inteiro. Nao deve ser problemas.

Ou entao voce faz um if. Tipo, se o numero eh menor do que cem, imprime dois zeros antes, etc…

rbarioni,

Parece que em Java não dá mesmo pra fazer o que vc quer. Vc está querendo passar o int já com 4 dígitos a partir do Java. Vc não pode passar como int mesmo e tratar esse número no comunicador, no COBOL ou no DB2 pra formatar do jeito que vc quer?

Nunca usei COBOL nem DB2. Desculpe se falei besteira.

a 1.5 beta sai no fim desse ano como os caras da sun tech days falaram ou nao?
como q eles vao implementar essa formatacao paulo?

obrigado a todos pelas respostas…

parece q o comunicador q irei usar eh capaz de fazer essa formatacao…

desculpe algum transtorno.
obrigado

me diz uma coisa, você é obrigado a utilizar este intermediario???
se o banco esta armazenado em um DB2, você pode utilizar o driver JDBC do proprio DB2, com certeza vai ser mais rapido e mais fácil :slight_smile: