2017-01-16 4 views
2

J'essaye de formater une chaîne en utilisant Java String.format. Je dois créer une chaîne comme ceci: "<padding spaces> int1/int2"Java string.format largeur globale avec plusieurs paramètres

Maintenant j'ai le format suivant: " %1$d/%2$d10" ou "%1$d10/%2$" (ou juste "%1$d/%2$d", sans le réglage de la largeur) mais cela ne fonctionne pas correctement. Je veux que la chaîne soit alignée sur la droite, avec des espaces vides comme padding pour une largeur totale de 10.

J'utilise "%1$10.1f" ailleurs dans mon code, pour un seul flottant. Les doubles entiers doivent être complétés à la même largeur.

J'ai fait des recherches googles sur mon cerveau, mais je n'arrive pas à trouver un moyen de masquer la chaîne totale au lieu des deux entiers individuels. L'aide serait appréciée!

+0

ma mise en forme mobile Pardon – kwantuM

Répondre

1

Créer la chaîne double entier en utilisant d'abord:

int one = 1; 
int two = 2; 
String dints = String.format("%d/%d", one, two); 

Ensuite, formatez la chaîne dints avec une largeur de 10:

String whatYouWant = String.format("%10s", dints); 

impression whatYouWant en sortie:

 1/2 

Vous peut également le faire en un seul appel, au prix de la lisibilité, par exemple:

String whatYouWant = String.format("%10s", String.format("%d/%d", one, two)); 

ou moins:

String whatYouWant = String.format("%10s", one + "/" + two); 
+0

donc il n'y a aucun moyen de le faire dans un appel? Aussi, j'ai besoin d'utiliser un padding de 9 dans la deuxième étape pour que la chaîne ait la même largeur que la version float. Pouvez-vous expliquer pourquoi? Merci beaucoup! – kwantuM

+1

J'ai mis à jour ma réponse pour répondre à votre première question. Je ne suis pas exactement sûr pourquoi vous devez utiliser un padding de 9, peut-être vous avez un espace en face de '% 10s' alors que je ne le fais pas. Donc, votre chaîne de format est '"% 10s "' alors que la mienne est '"% 10s "'. –

+0

Le bug était en effet ailleurs. Le code fonctionne bien – kwantuM