1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| public class DemoPadding {
public static void main(String[] args) {
int[] valeurs = new int[]{100, -2390, 12, -23, 890, -192, 1, 34};
afficheValeurs(3, valeurs);
}
/**
* Affiche les valeurs alignés à droite, dans un tableau de colonnes de même largeur.
*
* @param nbCol
* nombre de colonnes
* @param valeurs
* valeurs à afficher
*/
public static void afficheValeurs(int nbCol, int[] valeurs) {
// on détermine la largeur de la valeur la plus grande
int maxNbCaracteres = 0;
for (int valeur : valeurs) {
int nbCaracteres = nombreDeCaracteres(valeur);
if (nbCaracteres > maxNbCaracteres) {
maxNbCaracteres = nbCaracteres;
}
}
// on créé un format avec padding
String formatNombre = "%" + maxNbCaracteres + "d";
int col = 0;
for (int valeur : valeurs) {
System.out.print("| ");
System.out.printf(formatNombre, valeur);
System.out.print(" ");
col++; // colonne suivante
if (col == nbCol) {
// passage à la ligne
System.out.println("|");
col = 0;
}
}
if ( col!=0 ) {
// on comble le tableau avec des cases vides selon le même principe
String formatCaseVides = "%" + maxNbCaracteres + "s";
while (col++ < nbCol) {
System.out.print("| ");
System.out.printf(formatCaseVides, " ");
System.out.print(" ");
}
System.out.println("|");
}
}
// calcul du nombre de caractères pris par un nombre
public static int nombreDeCaracteres(int valeur) {
int nbCar;
if ( valeur==0 ) {
nbCar=1;
}
else {
if (valeur < 0) {
nbCar = 1;
valeur = -valeur;
} else {
nbCar = 0;
}
while (valeur > 0) {
valeur /= 10;
nbCar++;
}
}
return nbCar;
}
} |
Partager