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
| import java.text.DecimalFormat;
import java.text.FieldPosition;
import java.text.NumberFormat;
public class Matrice {
//Sous fonction: aligne et écrit la matrice
static void ecrireMatrice(double[][] matrice, int nbl){
// on suppose que les nombres sont compris entre -999 et 999
// donc :
int nbMAXIdeCaracteresAvantVirgule = 4; // pour tenir compte de l'éventuel signe "-"
DecimalFormat df = new DecimalFormat("##0.###");
// donc :
int nbMAXIdeCaracteresApresVirgule = 3;
FieldPosition fp1 = new FieldPosition(NumberFormat.INTEGER_FIELD); // pour étudier ce qui se passe AVANT la virgule
FieldPosition fp2 = new FieldPosition(NumberFormat.FRACTION_FIELD); // pour étudier ce qui se passe APRES la virgule
int nbDeCaracteresAvantVirgule;
int nbDeCaracteresApresVirgule;
StringBuffer aAfficher; // chaine représentant le nombre a afficher
double element; // element courant de la matrice
for (int l=0; l<nbl; l++){
for (int c=0; c<nbl; c++){
element = matrice[l][c];
aAfficher = df.format(element, new StringBuffer(), fp1);
// rajout des espaces au debut
nbDeCaracteresAvantVirgule = fp1.getEndIndex();
for (int i=0; i<(nbMAXIdeCaracteresAvantVirgule-nbDeCaracteresAvantVirgule); i++) {
aAfficher.insert(0, " "); // 0 = insertion au début
}
// rajout des espaces à la fin
StringBuffer el2 = df.format(element, new StringBuffer(), fp2);
nbDeCaracteresApresVirgule = fp2.getEndIndex()-fp2.getBeginIndex();
if (nbDeCaracteresApresVirgule == 0) {
aAfficher.append(" "); // pour compenser l'absence de virgule
}
for (int i=0; i<(nbMAXIdeCaracteresApresVirgule-nbDeCaracteresApresVirgule); i++) {
aAfficher.append(" ");
}
// affichage final
System.out.print(aAfficher.toString());
System.out.print(" "); // espace entre deux nombres
}
System.out.print("\n"); // fin de ligne
}
}
public static void main(String[] args) {
double[][] matrice = {{-13.2, 442.5675, -3.1005}, {34., -345.56, 6.5}, {7.12, -38., -349.67855}};
ecrireMatrice(matrice, 3);
}
} |
Partager