/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Fevrier 2005                   */

public class AffichageMatriceEnConsole {

  /* Fonction d'affichage d'une matrice d'entiers         */
  /* m : tableau d'entiers a afficher                     */

  public static void affichageMatrice(int [][] m) {
    for ( int i = 0 ; i < m.length ; i++ ) {
  /* Pour toute les lignes de la matrice a afficher       */
      for ( int j = 0 ; j < m[0].length ; j++ ) {
  /* Affichage d'un entier de la ligne i                  */
  /* (sans aller a la ligne                               */
        Console.out.print(m[i][j]+" "); }
  /* On va a la ligne quand tous les entiers d'une ligne  */
  /* ont ete affiches                                     */
      Console.out.println(); }
  }

  /* Fonction de creation d'une chaine de caracteres      */
  /* representant un nombre justifie a droite complemente */
  /* par des espaces                                      */
  /* v : entier a formater                                */
  /* larg : nombre de caracteres de la chaine resultat    */
  /* Resultat fonction : Chaine de caracteres             */

  public static String justifieADroite(int v,int larg) {
  /* Definition et initialisation de la chaine            */
  /* avec l'entier a formater                             */
    String s = ""+v;
  /* Ajout a gauche a la chaine d'autant de caracteres    */
  /* espace qu'il le faut pour que sa longueur devienne   */
  /* superieure ou egale a la largeur recherchee          */
    while ( s.length() < larg )
      s = " "+s;
  /* Resultat de la fonction                              */
    return(s);
  }

  /* Fonction d'affichage d'une matrice d'entiers         */
  /* m : tableau d'entiers a afficher                     */
  /* larg : largeur de chaque colonne                     */

  public static void affichageMatrice(int [][] m,int larg) {
    for ( int i = 0 ; i < m.length ; i++ ) {
  /* Pour toute les lignes de la matrice a afficher       */
      for ( int j = 0 ; j < m[0].length ; j++ ) {
  /* Affichage d'un entier de la ligne i                  */
  /* (sans aller a la ligne                               */
        Console.out.print(justifieADroite(m[i][j],larg+1)); }
  /* On va a la ligne quand tous les entiers d'une ligne  */
  /* ont ete affiches                                     */
      Console.out.println(); }
  }

  /* Fonction de remplissage d'une matrice d'entiers      */
  /* par lecture au clavier                               */
  /* m : tableau d'entiers a remplir                      */

  public static void remplissageMatrice(int [][] m) {
    for ( int i = 0 ; i < m.length ; i++ )
      for ( int j = 0 ; j < m[0].length ; j++ ) {
        Console.out.print("Valeur d'indice "+i+" "+j+" : ");
        m[i][j] = Integer.valueOf(Console.in.readLine()).intValue(); }
  }

  /* Fonction principale                                  */

  public static void main(String [] args) {
    Console.setTitle("AffichageMatrice");
  /* Lecture au clavier du nombre de lignes               */
  /* et du nombre de colonnes de la matrice               */
    Console.out.print("Combien de lignes  : ");
    int l = Integer.valueOf(Console.in.readLine()).intValue();
    Console.out.print("Combien de colones : ");
    int c = Integer.valueOf(Console.in.readLine()).intValue();
  /* Creation d'une matrice de l sur c entiers            */
    int [][] m = new int[l][c];
  /* Remplissage                                          */
    remplissageMatrice(m);
  /* Affichage du resultat du remplissage                 */
    Console.out.print("La matrice est");
    affichageMatrice(m);
  /* Affichage du resultat du remplissage                 */
    Console.out.print("La matrice avec affichage formate est");
    affichageMatrice(m,5);
  }
}