المصفوفات متباينة الأطوال وتنسيق الجداول
تعامل مع المصفوفات ثنائية الأبعاد متباينة الأطوال واطبع جداول بمحاذاة صحيحة باستخدام عرض مستقل لكل عمود؛ ينشئ العرض التوضيحي مصفوفة نموذجية من دون 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أساسيات المصفوفات ثنائية الأبعاد والتكرار المتداخل
- المصفوفات متباينة الأطوال وتنسيق الجداول
- القيم الكبرى للصفوف والأعمدة، والتحويل، والتنسيق
- مشروع مصغّر ثنائي الأبعاد: سجل الدرجات
- أدوات ثنائية الأبعاد كفئة مساعدة (إعادة الهيكلة)
- تنظيف البيانات ثنائية الأبعاد والتحقّق منها