2013-07-17 41 views
11

Desidero formattare un numero di integer a 3 cifre su un valore string a 4 cifre. Esempio:Come formattare un intero di 3 cifre in una stringa di 4 cifre?

int a = 800; 
String b = "0800"; 

Ovviamente la formattazione verrà eseguita all'istruzione String b. Grazie ragazzi!

+3

Dai un'occhiata a http://docs.oracle.com/javase/tutorial/java/data/numberformat.html – arynaq

+0

@arynaq thx! Questo ha aiutato molto! –

risposta

29

Uso String#format:

String b = String.format("%04d", a); 

Per gli altri formati di rimandare il documentation

+0

Capito, grazie! –

+0

Crap, quasi 24 ore e ho completamente dimenticato di accettare questa risposta! Colpa mia! –

3
String b = "0" + a; 

Potrebbe essere più semplice?

+0

@SandiipPatil Che non verrà compilato. –

+1

Potrebbe essere più facile? No. Ma forse più robusto/flessibile. – Thilo

+2

@Thilo: concordato. Ma la domanda chiedeva specificatamente numeri interi a 3 cifre. Perché rendere le cose complesse quando possono essere semplici? Ora, sono anche d'accordo sul fatto che la tua soluzione sia tutt'altro che complessa :-) –

1

Prova

String.format("%04d", b); 
+1

Accanto a 'b' invece di' a', come questa risposta differisce dalla risposta di Thilo? – Maroun

+0

@ MarounMaroun: Beh, guarda i timestamp. Molto probabilmente solo una condizione di gara. – Thilo

5

Se si vuole avere solo una volta usare String.format("%04d", number) - se ne avete bisogno più spesso e desidera centralizzare il modello (ad es. file di configurazione) vedere la soluzione di seguito.

Btw. c'è un Oracle tutorial sulla formattazione dei numeri.

Per farla breve:

import java.text.*; 

public class Demo { 

    static public void main(String[] args) { 
     int value = 123; 
     String pattern="0000"; 
     DecimalFormat myFormatter = new DecimalFormat(pattern); 
     String output = myFormatter.format(value); 
     System.out.println(output); //
    } 
} 

Speranza che aiuta. * Jost

+0

In realtà, potrebbe essere un po 'meglio. –

0

È sempre possibile utilizzare Jodd Printf per quello. Nel tuo caso:

Printf.str("%04d", 800); 

farebbe il lavoro. Questa classe è stata creata prima che Sun aggiungesse String.format e avesse un po 'più opzioni di formattazione.

Problemi correlati