المصفوفات ثلاثية الأبعاد وما بعدها
جزء من قسم Logic & Flow في رحلة Java على Coddy — الدرس 7 من 59.
تماماً كما يمكنك إنشاء مصفوفات ثنائية الأبعاد 2D (مصفوفات من المصفوفات)، يمكنك إنشاء مصفوفات ثلاثية الأبعاد 3D (مصفوفات من مصفوفات من المصفوفات)، ومصفوفات رباعية الأبعاد 4D، وهكذا. تُسمى هذه المصفوفات بالمصفوفات متعددة الأبعاد.
يمكن تصور المصفوفة ثلاثية الأبعاد كمجموعة من المصفوفات ثنائية الأبعاد المرتبة فوق بعضها البعض، مما يشكل هيكلاً يشبه المكعب. يتم الوصول إلى كل عنصر في المصفوفة ثلاثية الأبعاد باستخدام ثلاثة فهارس: واحد للعمق (أي مصفوفة ثنائية الأبعاد)، وواحد للصف، وواحد للعمود.
إليك كيفية التصريح عن مصفوفة ثلاثية الأبعاد وتهيئتها في Java:
data_type[][][] array_name = new data_type[depth][rows][columns];data_type: نوع العناصر التي ستحتوي عليها المصفوفة.array_name: اسم المصفوفة.
depth: عدد المصفوفات ثنائية الأبعاد (العمق).rows: عدد الصفوف في كل مصفوفة ثنائية الأبعاد.columns: عدد الأعمدة في كل مصفوفة ثنائية الأبعاد.
على سبيل المثال، لإنشاء مصفوفة ثلاثية الأبعاد من الأعداد الصحيحة بأبعاد 2x3x4، عليك كتابة ما يلي:
int[][][] cube = new int[2][3][4];يمكنك أيضاً تهيئة مصفوفة ثلاثية الأبعاد مباشرةً:
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};التحدي
سهلاكتب برنامجاً يستقبل ثلاث وسائط صحيحة: depth، و rows، و cols. يجب أن يقوم بإنشاء مصفوفة ثلاثية الأبعاد (3D array) من الأعداد الصحيحة بالأبعاد المحددة، وتهيئة كل عنصر في المصفوفة بحاصل ضرب فهارس العمق والصف والعمود الخاصة به (بدءاً من 1).
على سبيل المثال، العنصر الموجود في [d][r][c] يجب أن تكون قيمته (d + 1) * (r + 1) * (c + 1).
أخيراً، قم بطباعة المصفوفة ثلاثية الأبعاد الناتجة إلى وحدة التحكم (console) باستخدام حلقات متداخلة. يجب أن يظهر المخرج بهذا الشكل:
Depth 0:
1 2 3 4
2 4 6 8
3 6 9 12
Depth 1:
2 4 6 8
4 8 12 16
6 12 18 24ورقة مرجعية
المصفوفات ثلاثية الأبعاد هي مصفوفات من مصفوفات من مصفوفات، يتم تصورها كبنى تشبه المكعب مع العمق والصفوف والأعمدة.
التصريح والتهيئة:
data_type[][][] array_name = new data_type[depth][rows][columns];مثال:
int[][][] cube = new int[2][3][4];التهيئة المباشرة:
int[][][] cube = {
{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
},
{
{13, 14, 15, 16},
{17, 18, 19, 20},
{21, 22, 23, 24}
}
};يتم الوصول إلى العناصر باستخدام ثلاثة فهارس: array[depth][row][column]
جرّب بنفسك
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int depth = scanner.nextInt();
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][][] array3D = new int[depth][rows][cols];
// اكتب الكود الخاص بك أدناه
// طباعة المصفوفة ثلاثية الأبعاد
for (int d = 0; d < depth; d++) {
System.out.println("Depth " + d + ":");
for (int r = 0; r < rows; r++) {
for (int c = 0; c < cols; c++) {
System.out.print(array3D[d][r][c] + " ");
}
System.out.println();
}
}
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1المصفوفات متعددة الأبعاد
أساسيات المصفوفات ثنائية الأبعادالوصول إلى عناصر المصفوفات ثنائية الأبعادالحلقات المتداخلة مع المصفوفات ثنائية الأبعادمراجعة - المصفوفات ثنائية الأبعادجمع وطرح المصفوفاتالمصفوفات المتعرجة (Jagged Arrays)المصفوفات ثلاثية الأبعاد وما بعدهاأنماط المصفوفات ثنائية الأبعاد الشائعةمراجعة - كل شيء عن المصفوفات2HashMap الجزء الأول
ما هو الـ HashMap؟تعريف الـ HashMapالوصول إلى القيمالتحقق من وجود المفتاحتعديل القواميسملخص - HashMap3HashMap الجزء الثاني
دوال HashMapالتكرار باستخدام keySet()التكرار باستخدام entrySet()HashMap متداخلمراجعة - إدارة المستودعمراجعة - عمليات HashMap6التحكم المتقدم في تدفق البرنامج
العبارات المعنونةتعبير Switchمطابقة الأنماطجمل الحمايةمراجعة - تدفق التحكم