0Pricing
Java Academy · Leçon

Maximums par ligne/colonne, transposition et mise en forme

Trouvez les maximums par ligne et par colonne en toute sécurité (y compris pour les tableaux irréguliers) et construisez des transpositions de matrices (rectangulaires et irrégulières). Entraînez-vous à l’affichage aligné.

Maximums par ligne/colonne, transposition et mise en forme est une leçon Java Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 6. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Java Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Java Academy comprend 6 leçons au total.

Maxima des lignes

Maxima des lignes : calculez le maximum de chaque ligne en parcourant ses éléments une seule fois.

public class Main {
  public static void main(String[] args) {
    // Example jagged array
    int[][] m = {
      {1, 7, 3},
      {4, 9, 2, 11},
      {6}
    };

    int r = 1; // choose which row to check (row index 1 → {4, 9, 2, 11})

    // Max of a single row r
    int max = Integer.MIN_VALUE; // start with very small number
    for (int c = 0; c < m[r].length; c = c + 1) {
      if (m[r][c] > max) {
        max = m[r][c]; // update if current value is larger
      }
    }

    System.out.println("Max value in row " + r + " = " + max);
  }
}

Maxima des colonnes

Maxima des colonnes dans des tableaux irréguliers : vérifiez la longueur de chaque ligne avant de lire la colonne c.

public class Main {
  public static void main(String[] args) {
    // Example jagged array (rows with different lengths)
    int[][] m = {
      {1, 7, 3},
      {4, 9},       // shorter row (only 2 columns)
      {6, 2, 11, 5} // longer row (4 columns)
    };

    int c = 2; // column index to check (3rd column)

    // Max of column c across all rows
    int colMax = Integer.MIN_VALUE;
    for (int r = 0; r < m.length; r = r + 1) {
      // Guard: only access if this row has column c
      if (c < m[r].length) {
        if (m[r][c] > colMax) {
          colMax = m[r][c]; // update maximum
        }
      }
    }

    System.out.println("Max value in column " + c + " = " + colMax);
  }
}

Transposée rectangulaire

Transposée (rectangulaire) : échangez les lignes et les colonnes lorsque toutes les lignes ont la même longueur.

public class Main {
  public static void main(String[] args) {
    // Example 2D rectangular matrix (3 rows × 2 columns)
    int[][] m = {
      {1, 2},
      {3, 4},
      {5, 6}
    };

    // Dimensions
    int rows = m.length;       // number of rows in m
    int cols = m[0].length;    // number of columns in m

    // Transposed matrix (C × R)
    int[][] t = new int[cols][rows];

    // Fill transposed matrix
    for (int r = 0; r < rows; r = r + 1) {
      for (int c = 0; c < cols; c = c + 1) {
        t[c][r] = m[r][c];  // swap row/column
      }
    }

    // Print original matrix
    System.out.println("Original matrix:");
    for (int r = 0; r < rows; r++) {
      for (int c = 0; c < cols; c++) {
        System.out.print(m[r][c] + " ");
      }
      System.out.println();
    }

    // Print transposed matrix
    System.out.println("Transposed matrix:");
    for (int r = 0; r < t.length; r++) {
      for (int c = 0; c < t[r].length; c++) {
        System.out.print(t[r][c] + " ");
      }
      System.out.println();
    }
  }
}

Transposée irrégulière

Transposée (irrégulière) : créez les colonnes sous forme de lignes, dimensionnez chacune d’elles selon la longueur de la ligne la plus longue et protégez les accès.

public class Main {
  public static void main(String[] args) {
    // Example jagged array (rows of different lengths)
    int[][] m = {
      {1, 2, 3},
      {4, 5},
      {6}
    };

    // 1) Find the maximum number of columns across all rows
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r].length > maxCols) {
        maxCols = m[r].length;
      }
    }

    // 2) Create transpose: it will have maxCols rows
    int[][] t = new int[maxCols][];

    // 3) Fill the transposed matrix
    for (int c = 0; c < maxCols; c = c + 1) {
      // Each transposed row has as many elements as original rows
      t[c] = new int[m.length];
      for (int r = 0; r < m.length; r = r + 1) {
        // If row is too short, pad with 0
        t[c][r] = (c < m[r].length) ? m[r][c] : 0;
      }
    }

    // Print original jagged array
    System.out.println("Original jagged array:");
    for (int r = 0; r < m.length; r++) {
      for (int c = 0; c < m[r].length; c++) {
        System.out.print(m[r][c] + " ");
      }
      System.out.println();
    }

    // Print transposed array
    System.out.println("Jagged-safe transpose:");
    for (int r = 0; r < t.length; r++) {
      for (int c = 0; c < t[r].length; c++) {
        System.out.print(t[r][c] + " ");
      }
      System.out.println();
    }
  }
}

Fonctions d’aide au formatage

Utilisez des fonctions d’aide pour calculer les largeurs des colonnes et afficher des matrices alignées à des fins de comparaison.

public class Main {

  // Compute per-column widths for a (possibly jagged) 2D int array.
  // For each column index c, we find the longest string length among m[r][c] (for rows that have that column).
  static int[] widths(int[][] m) {
    // 1) Find the maximum number of columns across all rows
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) {
      if (m[r].length > maxCols) maxCols = m[r].length;
    }

    // 2) Prepare width array (initialized to 0)
    int[] w = new int[maxCols];

    // 3) For each existing cell, compute the string length and keep the max per column
    for (int r = 0; r < m.length; r = r + 1) {
      for (int c = 0; c < m[r].length; c = c + 1) {
        int len = Integer.toString(m[r][c]).length();
        if (len > w[c]) w[c] = len;
      }
    }

    // 4) Ensure each column has at least width 1
    for (int c = 0; c < w.length; c = c + 1) {
      if (w[c] < 1) w[c] = 1;
    }
    return w;
  }

  // Print a (possibly jagged) matrix so that each column is right-aligned using the widths[] computed above.
  static void printAligned(int[][] m) {
    int[] w = widths(m); // column widths

    for (int r = 0; r < m.length; r = r + 1) {
      String line = "";

      for (int c = 0; c < m[r].length; c = c + 1) {
        // Convert number to string
        String s = Integer.toString(m[r][c]);

        // Left-pad with spaces until it matches the target column width
        while (s.length() < w[c]) s = " " + s;

        // Append to the line; add a single space between columns (but not after the last one)
        line = line + s + (c + 1 < m[r].length ? " " : "");
      }

      // Print the fully assembled row
      System.out.println(line);
    }
  }

  public static void main(String[] args) {
    // Demo with a jagged matrix (different row lengths)
    int[][] m = {
      {1, 200, 3},
      {45, 6},
      {7, 89, 1000, 11}
    };

    System.out.println("Aligned output:");
    printAligned(m);
  }
}

Démonstration de la transposée

Exécutez-la : comparez l’affichage aligné d’une matrice rectangulaire et de sa transposée, puis observez une matrice irrégulière, ses maxima de colonnes et sa transposée complétée.

public class Main {
  // Compute column maxima (jagged-safe)
  static int[] colMaxima(int[][] m) {
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) if (m[r].length > maxCols) maxCols = m[r].length;
    int[] max = new int[maxCols];
    for (int c = 0; c < maxCols; c = c + 1) {
      int best = Integer.MIN_VALUE;
      boolean seen = false;
      for (int r = 0; r < m.length; r = r + 1) {
        if (c < m[r].length) {
          if (!seen || m[r][c] > best) { best = m[r][c]; seen = true; }
        }
      }
      max[c] = seen ? best : 0;
    }
    return max;
  }

  // Transpose rectangular
  static int[][] transposeRect(int[][] m) {
    int rows = m.length;
    int cols = m[0].length;
    int[][] t = new int[cols][rows];
    for (int r = 0; r < rows; r = r + 1) {
      for (int c = 0; c < cols; c = c + 1) t[c][r] = m[r][c];
    }
    return t;
  }

  // Jagged-safe transpose (pads missing with 0)
  static int[][] transposeJagged(int[][] m) {
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) if (m[r].length > maxCols) maxCols = m[r].length;
    int[][] t = new int[maxCols][];
    for (int c = 0; c < maxCols; c = c + 1) {
      t[c] = new int[m.length];
      for (int r = 0; r < m.length; r = r + 1) t[c][r] = (c < m[r].length) ? m[r][c] : 0;
    }
    return t;
  }

  // Helpers
  static int[] widths(int[][] m) {
    int maxCols = 0;
    for (int r = 0; r < m.length; r = r + 1) if (m[r].length > maxCols) maxCols = m[r].length;
    int[] w = new int[maxCols];
    for (int r = 0; r < m.length; r = r + 1) {
      for (int c = 0; c < m[r].length; c = c + 1) {
        int len = Integer.toString(m[r][c]).length();
        if (len > w[c]) w[c] = len;
      }
    }
    for (int c = 0; c < w.length; c = c + 1) if (w[c] < 1) w[c] = 1;
    return w;
  }

  static void printAligned(int[][] m) {
    int[] w = widths(m);
    for (int r = 0; r < m.length; r = r + 1) {
      String line = "";
      for (int c = 0; c < m[r].length; c = c + 1) {
        String s = Integer.toString(m[r][c]);
        while (s.length() < w[c]) s = " " + s;
        line = line + s + (c + 1 < m[r].length ? " " : "");
      }
      System.out.println(line);
    }
  }

  public static void main(String[] args) {
    // Rectangular example for transpose
    int[][] rect = {
      {1, 2, 3},
      {4, 5, 6}
    };

    // Jagged example for maxima and jagged transpose
    int[][] jag = {
      {9, 12, 7},
      {5},
      {8, 10}
    };

    System.out.println("rect:");
    printAligned(rect);
    System.out.println("transpose(rect):");
    printAligned(transposeRect(rect));

    System.out.println("jag (jagged):");
    printAligned(jag);
    int[] cm = colMaxima(jag);
    System.out.print("col maxima: ");
    for (int i = 0; i < cm.length; i = i + 1) System.out.print(cm[i] + (i + 1 < cm.length ? " " : ""));
    System.out.println();

    System.out.println("transpose(jag, padded):");
    printAligned(transposeJagged(jag));
  }
}

Vérification du maximum d’une colonne

Vérification rapide : pour une matrice irrégulière, comment calculez-vous le maximum de la colonne c ?

Bilan et suite

Bilan : vous avez calculé les maxima des lignes et des colonnes, transposé des matrices rectangulaires et construit une transposée adaptée aux tableaux irréguliers avec remplissage. Vous avez également formaté un affichage aligné.

Questions Fréquemment Posées

La leçon « Maximums par ligne/colonne, transposition et mise en forme » est-elle gratuite ?

Oui — le texte complet de « Maximums par ligne/colonne, transposition et mise en forme » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Java Academy, passe à CoddyKit PRO. Le cours Java Academy comprend 6 leçons au total.

Qu'est-ce que j'apprendrai dans « Maximums par ligne/colonne, transposition et mise en forme » ?

Trouvez les maximums par ligne et par colonne en toute sécurité (y compris pour les tableaux irréguliers) et construisez des transpositions de matrices (rectangulaires et irrégulières). Entraînez-vou… Tu pratiques Java Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Java Academy ?

Aucune expérience préalable n'est requise. Java Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 6.

Combien de temps prend la leçon « Maximums par ligne/colonne, transposition et mise en forme » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Java Academy ?

Oui. Chaque leçon Java Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bases des tableaux 2D et parcours imbriqué
  2. Tableaux irréguliers et mise en forme des tableaux
  3. Maximums par ligne/colonne, transposition et mise en forme
  4. Mini-projet 2D : carnet de notes
  5. Utilitaires 2D dans une classe d’aide (refactorisation)
  6. Nettoyage et validation des données 2D
← Retour à Java Academy