Duvida de zero as esquerda int para String

Olá ,

tenho a seginte situação

int numero = 40

e queria criar uma String numeroformatado igual 000000040

alguem poderia me ajudar …

Bom…

Uma idéia é primeiro verificar a quantidade de caracteres voce quer…por exemplo 10:

int valor = 40

StringBuffer sb = new StringBuffer();
for(x=0; x<(10-String.valueOf(valor).lengh);x++){
sb.append("0");
}
sb.append(valor);

System.out.println(sb.toString());

jovem,

vc tera que criar um método para preencher.

public class A {

   public static void main(String[] args) {
      
      String i = "40";
      String temp="";
      
      for(int j = 0; j < (10 - i.length()) ; j++){
         temp += "0";
      }

      temp += i;
    
      System.out.println(temp );
  
   }
} 

OBS: O exemplo acima está melhor desenvolvido… :smiley:

Faça assim:

NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumIntegerDigits(9); System.out.println(nf.format(numero));Blz? Flw! :thumbup:

1 curtida

vamos supor que n e o numero de caracteres que tenque ser preenchidos e x e o valor,
exemplo precisa de 8 caracteres para preencher o campo entao: n = 8, x = 40
o que seria: "00000040"



 public String preencheZeroAEsquerda(int numero, int quantidade) {
  
    String s = Strng.valueOf(numero);
    
    if (s.length() < quantidade) {
       int zeros = s.length() - quantidade;
       StringBuffer buffer = new StringBuffer();
       for (int i = 0; i < quantidade; i++) {
         buffer.append("0");
       }
       buffer.append(s);
       s = buffer.toString();
    } 
   return s;
 }

não testei… mas acho q funciona…

Cara… como vocês complicam! :shock: :smiley:

Vale a pena que esses digitos devem vir a esquerda…
:shock:

import java.text.NumberFormat;

public class A {

   public static void main(String[] args) {
      int numero = 10;
      NumberFormat nf = NumberFormat.getInstance();
      nf.setMinimumIntegerDigits(9);
      System.out.println(nf.format(numero));
   }
} 

Print

000.000.010

Mais bonito mesmo!! :stuck_out_tongue:

Acho que consome menos memória se usar um StringBuilder a dar append sempre.

Mero detalhe! :mrgreen:

NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumIntegerDigits(9); System.out.println(nf.format(40).replace(".", ""));

1 curtida

Olha a Gambi!!!

[quote=von.juliano]Mero detalhe! :mrgreen:

NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumIntegerDigits(9); System.out.println(nf.format(40).replace(".", ""));[/quote]

POG das bonitas, hein?

Pô, não falem assim… eu prefiro “formas alternativas para solucionar um problema” :lol:

Véi, essa foi a gambira do dia. Vou até colocar la no topico das Pogs rsrsrsrs.

int numero = 40;

String str = String.format ("%09d", numero); 

Não se esqueça do “0” depois do “%”. É ele que põe os zeros à esquerda.

thingol,

O d nesse caso é porque ele é um Inteiro correto?

Teria como fazer isso se ele fosse uma String?

Por que é que você quer imprimir uma string (como “José”) com zeros à esquerda?

Se a String for garantidamente numérica, então você pode usar assim:

String valor int valorInteiro = Integer.parseInt(valor,10);

E daí utilizar o método que o thingol falou.

http://www.guj.com.br/posts/list/96482.java#518126

No link acima, no caso de ser String, as duas últimas funcionam. É só trocar o flag ‘d’ por ‘s’.