Массивы разной длины и форматирование таблиц
Работайте с двумерными массивами разной длины и выводите выровненные таблицы, используя ширину каждого столбца. В демонстрации создаётся пример матрицы без Scanner.
«Массивы разной длины и форматирование таблиц» — бесплатный урок Java Academy на CoddyKit. Это урок 2 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 6 уроков всего.
Концепция рваных массивов
Рваные двумерные массивы: каждая строка может иметь разную длину. Обрабатывайте строки отдельно и никогда не предполагайте, что количество столбцов одинаково.
Создание рваного массива
Создайте рваный массив, выделив строки разной длины. В сообщении объясняется, почему: нам нужно только столько столбцов, сколько требуется каждой строке.
public class Main {
public static void main(String[] args) {
// Create a jagged array with 3 rows of varying lengths
int[][] m = new int[3][];
// Row 0 has 2 columns
m[0] = new int[]{1, 2};
// Row 1 has 3 columns
m[1] = new int[]{3, 4, 5};
// Row 2 has 1 column
m[2] = new int[]{6};
// Print the jagged array
System.out.println("Jagged array contents:");
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(); // new line after each row
}
}
}
Безопасный перебор
Безопасно перебирайте элементы, используя m[r].length для каждой строки. Длина внутреннего цикла может отличаться для разных строк.
public class Main {
public static void main(String[] args) {
// Example jagged array
int[][] m = {
{1, 2},
{3, 4, 5},
{6}
};
// Safe nested loops for a jagged matrix
for (int r = 0; r < m.length; r = r + 1) {
// Always use the actual length of the current row
for (int c = 0; c < m[r].length; c = c + 1) {
int value = m[r][c]; // process the value
System.out.print(value + " ");
}
System.out.println(); // new line after each row
}
}
}
Ширина столбцов
Чтобы вывести выровненные столбцы, вычислите ширину каждого существующего столбца, просматривая все строки.
// Determine the maximum number of columns among all rows
int maxCols = 0;
for (int r = 0; r < m.length; r = r + 1) {
if (m[r].length > maxCols) maxCols = m[r].length;
}
// For each column, store the maximum string length of values in that column
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;
}
}Выровненный вывод
Дополняйте каждое значение слева, пока оно не достигнет ширины столбца, а затем выводите строку целиком.
// Print each row with left-padded columns
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; // left pad with spaces
line = line + s + (c + 1 < m[r].length ? " " : "");
}
System.out.println(line);
}Демонстрация без ввода
Запустите: эта демонстрация создаёт рваную матрицу в коде, вычисляет ширину столбцов и выводит выровненную таблицу — ввод не требуется.
public class Main {
// Compute per-column widths for a jagged matrix
static int[] colWidths(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;
}
}
// Ensure at least width 1 for each column
for (int c = 0; c < w.length; c = c + 1) {
if (w[c] < 1) w[c] = 1;
}
return w;
}
// Print the matrix with aligned columns
static void printTable(int[][] m) {
int[] w = colWidths(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) {
// Sample jagged matrix (no Scanner; values are hard-coded)
int[][] m = {
{1, 23, 456},
{7, 8},
{90, 12, 3, 4}
};
System.out.println("Aligned table:");
printTable(m);
}
}
Проверка перебора рваного массива
Быстрая проверка: какой вложенный цикл безопасно перебирает каждый элемент рваной матрицы?
Итоги и далее
Итоги: Вы создали рваные массивы, безопасно перебирали их с учётом длины каждой строки, вычисляли ширину столбцов и выводили выровненные таблицы — без Scanner.
Далее: изучите максимумы строк и столбцов, а также транспонирование матрицы.
Часто задаваемые вопросы
Урок «Массивы разной длины и форматирование таблиц» бесплатный?
Да — полный текст урока «Массивы разной длины и форматирование таблиц» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 6 уроков всего.
Чему я научусь в уроке «Массивы разной длины и форматирование таблиц»?
Работайте с двумерными массивами разной длины и выводите выровненные таблицы, используя ширину каждого столбца. В демонстрации создаётся пример матрицы без Scanner. Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 6.
Сколько времени занимает урок «Массивы разной длины и форматирование таблиц»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Основы двумерных массивов и вложенный перебор
- Массивы разной длины и форматирование таблиц
- Максимумы строк и столбцов, транспонирование и форматирование
- Мини-проект: ведомость оценок
- Двумерные утилиты как вспомогательный класс (рефакторинг)
- Очистка и проверка двумерных данных