Java printf l'aide de la variable de taille de champ?
Je suis juste en train de convertir du code C à Java et j'ai un peu de mal avec String.printf
.
En C, pour obtenir une largeur spécifique basé sur une variable, je peux utiliser:
printf("Current index = %*d\n", sz, index);
et il sera le format de l'entier à une taille spécifique basée sur sz
.
Essayer:
System.out.println(String.format("Current index = %*d\n", sz, index));
résultats dans une erreur, puisqu'il n'aime pas la *
.
J'ai actuellement les suivants bidouille:
System.out.println(String.format("Current index = %" + sz + "d\n", index));
mais j'espère que il y a un peu de mieux, oui?
- À l'aide println(String.format) est redondant. Vous devez utiliser printf méthode.
Vous devez vous connecter pour publier un commentaire.
Déclarer une variable supplémentaire avant d'utiliser
printf
:(c'est la première solution que j'ai trouvé à partir d'une recherche sur le web)
Ce n'est sans doute pas mieux que votre "bidouille", mais ici, c'est une méthode que vous pouvez intégrer à l'appel à
printf
qui se substitue largeurs pour les astérisques que vous lui transmettez. Son résultat est utilisé comme format.Par exemple, considérons cet appel:
Je vais remplacer la première et la troisième largeurs par l'intermédiaire d'une fonction intégrée:
Et voici le code:
En supposant que l'indice s'adapte à l'intérieur sz vous pouvez faire quelque chose comme:
Note, en n'utilisant pas
Format
ou l'un quelconque de ses sous-classes, il n'y a pas deLocale
dépendante des caractères comme ' ', '.' ou ',' ajouté à la sortie.