J'imprime les données ligne par ligne et je souhaite qu'elles soient organisées comme un tableau.
J'ai d'abord utilisé firstName + ", " + lastName + "\t" + phoneNumber
.
Mais pour certains des plus grands noms, le numéro de téléphone est poussé hors de l'alignement
J'essaie d'utiliser String.format () pour obtenir cet effet. Quelqu'un peut-il me dire la syntaxe de format à utiliser?
J'ai essayé String.format("%s, %s, %20s", firstName, lastName, phoneNumber)
, mais ce n'est pas ce que je veux. Je veux que ça ressemble à ceci:
John, Smith 123456789
Bob, Madison 123456789
Charles, Richards 123456789
Edit: Ces réponses semblent fonctionner pour System.out.println (). Mais j'en ai besoin pour travailler pour un JTextArea. J'utilise textArea.setText ()
Ça a marché. JTextArea n'utilise pas de polices à espacement fixe par défaut. J'ai utilisé setFont () pour changer cela, et maintenant cela fonctionne comme un charme. Merci à tous pour les solutions.
pensez à utiliser un nombre négatif pour votre spécificateur de longueur: %-20s
. Par exemple:
public static void main(String[] args) {
String[] firstNames = {"Pete", "Jon", "Fred"};
String[] lastNames = {"Klein", "Jones", "Flinstone"};
String phoneNumber = "555-123-4567";
for (int i = 0; i < firstNames.length; i++) {
String foo = String.format("%-20s %s", lastNames[i] + ", " +
firstNames[i], phoneNumber);
System.out.println(foo);
}
}
retour
Klein, Pete 555-123-4567
Jones, Jon 555-123-4567
Flinstone, Fred 555-123-4567
Essayez de mettre la largeur dans le deuxième espace réservé avec -
signe pour le remplissage droit comme:
String.format("%s, %-20s %s", firstName, lastName, phoneNumber)
Cela donnera la largeur spécifiée au deuxième argument (nom de famille) avec un remplissage à droite et le numéro de téléphone démarrera uniquement après la chaîne de largeur spécifiée.
EDIT: Démo:
String firstName = "John";
String lastName = "Smith";
String phoneNumber = "1234456677";
System.out.println(String.format("%s, %-20s %s",firstName, lastName, phoneNumber));
impressions:
John, Smith 1234456677
La seule alternative est de boucler la liste des noms, de calculer la longueur maximale de la chaîne et d'ajouter des espaces blancs au besoin après chaque nom pour garantir que tous les nombres commencent dans la même colonne.
L'utilisation d'onglets présente le désavantage que vous ne pouvez pas connaître a priori
combien d'espaces sont équivalents à un onglet, car il dépend de l'éditeur.