في Java، يُنظر إلى المصفوفة ثنائية الأبعاد على أنها مصفوفة من المصفوفات ، أي أن المصفوفة ثنائية الأبعاد عبارة عن مصفوفة خاصة أحادية البعد، وكل عنصر في المصفوفة ثنائية الأبعاد عبارة عن مصفوفة أحادية البعد.
نوع بيانات العنصر [][] اسم المصفوفة = جديد نوع بيانات العنصر [طول المصفوفة ثنائية الأبعاد] [طول المصفوفة أحادية البعد]؛
int[][]arr=newint[3][2];
يمثل الموقف أعلاه أن هناك ثلاث مصفوفات أحادية البعد، وكل مصفوفة أحادية البعد تحتوي على عنصرين.
نوع بيانات العنصر []] اسم المصفوفة = جديد نوع بيانات العنصر [طول المصفوفة ثنائية الأبعاد] []؛
int[][]arr=newint[3][];
يمثل الموقف أعلاه أن هناك ثلاث مصفوفات أحادية البعد، لكن عدد العناصر في كل مصفوفة أحادية البعد غير مؤكد، ويمكن أن يختلف عدد العناصر في كل مصفوفة أحادية البعد.
نوع بيانات العنصر [][] اسم المصفوفة = {{Element 1, Element 2,…}, {Element 1, Element 2,…},…};
int[][]arr={{1,2,3},{4,5},{6,7,8,9}};
يمثل الوضع أعلاه أن هناك 3 مصفوفات أحادية البعد، المصفوفة الأولى أحادية البعد تحتوي على 3 عناصر، والمصفوفة الثانية أحادية البعد تحتوي على عنصرين، والمصفوفة الثالثة أحادية البعد تحتوي على 4 عناصر في كل منها يمكن أن تكون المصفوفة أحادية البعد مختلفة.
هناك تنسيقان للإعلان عن مصفوفة ثنائية الأبعاد:
نوع عنصر الصفيف اسم الصفيف[][];
نوع عنصر المصفوفة[][] اسم المصفوفة؛
على سبيل المثال:
charcat[][];char[][]cat;
تهيئة المصفوفات ثنائية الأبعاد هي نفس تهيئة المصفوفات ذات الأبعاد نفسها. هناك طريقتان: التهيئة الديناميكية والتهيئة الثابتة.
1) قم بالتعريف أولاً ثم قم بالتهيئة بشكل ثابت
نوع بيانات العنصر []] اسم المصفوفة ثنائية الأبعاد = نوع البيانات الجديد للعنصر []] {{element 1, element 2, element 3,...},{قائمة القيم في الصف الثاني}، …،{قائمة القيم في الصف ن}}؛
2) التهيئة الثابتة أثناء الإعلان
نوع بيانات العنصر [][] اسم المصفوفة ثنائية الأبعاد = جديد نوع بيانات العنصر [][]{{العنصر 1، العنصر 2، العنصر 3،…}،{قائمة قيم الصف الثاني}،…،{nth قائمة قيم الصف }};
ملاحظة : لا يمكن كتابة الأرقام في "[]]" في "نوع بيانات العنصر الجديد []]" على اليمين، لأن عدد الصفوف والأعمدة يتحدد بعدد العناصر في {}.
3) طريقة الكتابة المبسطة للتهيئة الثابتة في نفس وقت الإعلان
نوع بيانات العنصر [][] اسم المصفوفة ثنائية الأبعاد = {{element 1, element 2, element 3,…},{قائمة القيم في الصف الثاني},...,{قائمة القيم في الصف n}};
على سبيل المثال:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr={{1,2,3},{4,5},{6}};// تحديد المصفوفة System.out.println(arr[0 ][0]);//1System.out.println(arr[ 1][0]);//4System.out.println(arr[2][0]);//6System.out.println(arr[0][1]);//2System.out.println(arr [1][1]);//5System.out.println(arr[2][1]);//خارج الحدود}}
لا يحتاج إنشاء التهيئة الديناميكية إلى الإعلان عن طول المصفوفة أحادية البعد بالداخل، لذلك يمكن أن يكون طول كل مصفوفة أحادية البعد مختلفًا، لذلك هناك طريقتان للتهيئة التاليتين.
1) التهيئة الديناميكية 1: جدول القاعدة ثنائي الأبعاد
يحدد المبرمج طول المصفوفة ويعين القيمة لاحقًا. في البداية، سيعطي النظام القيمة الأولية الافتراضية للعنصر. ويعني الجدول العادي ثنائي الأبعاد أن عدد الأعمدة في كل صف هو نفسه التنسيق العام هو كما يلي أولاً تحديد عدد الصفوف وعدد الأعمدة:
نوع بيانات العنصر []] اسم المصفوفة ثنائية الأبعاد = نوع بيانات العنصر الجديد [m] [n]؛
حيث يمثل m عدد المصفوفات أحادية البعد الموجودة في هذه المصفوفة ثنائية الأبعاد، أو عدد الصفوف الموجودة في الجدول ثنائي الأبعاد؛ ويمثل n عدد العناصر الموجودة في كل مصفوفة أحادية البعد، أو عدد الخلايا الموجودة هناك موجودة في كل صف.
في هذه المرحلة، يتم إنشاء المصفوفة، وتحديد عدد الصفوف والأعمدة، وتكون العناصر لها قيم افتراضية، ثم قم بتعيين قيم جديدة للعناصر:
اسم المصفوفة ثنائية الأبعاد [خط منخفض للصف] [خط منخفض للعمود] = القيمة ؛
على سبيل المثال:
publicclassMain{publicstaticvoidmain(String[]args){int[][]arr=newint[3][2];/*تحديد مصفوفة ثنائية الأبعاد تحتوي هذه المصفوفة ثنائية الأبعاد على ثلاثة عناصر مصفوفة أحادية البعد مصفوفة ذات أبعاد هناك عنصران */Syst em.out.println(arr);// إخراج اسم المصفوفة ثنائية الأبعاد System.out.println(arr[0]);// إخراج اسم العنصر الأول من المصفوفة ثنائية الأبعاد والاسم من المصفوفة أحادية البعد System.out.println( arr[0][0]);// إخراج عناصر المصفوفة ثنائية الأبعاد}}
2) التهيئة الديناميكية 2: جدول ثنائي الأبعاد غير منتظم
الجدول ثنائي الأبعاد غير المنتظم يعني أن عدد الأعمدة في كل صف قد يكون مختلفًا ويكون تنسيقه العام كما يلي أولاً.
نوع بيانات العنصر []] اسم المصفوفة ثنائية الأبعاد = نوع بيانات العنصر الجديد [إجمالي عدد الصفوف] []؛
في هذا الوقت، يتم تحديد العدد الإجمالي للصفوف فقط، ويصبح كل صف فارغًا الآن، ثم يتم تحديد عدد الأعمدة في كل صف، ويتم إنشاء مصفوفة أحادية البعد لكل صف:
اسم المصفوفة ثنائية الأبعاد [خط منخفض للصف] = نوع بيانات العنصر الجديد [إجمالي عدد الأعمدة في الصف]؛
في هذا الوقت، تكون عناصر الصفوف التي تمرر جديدًا لها قيم افتراضية، ولا تزال الصفوف التي لا تمرر جديدًا فارغة، وأخيرًا، يتم تعيين قيمة للعناصر:
اسم المصفوفة ثنائية الأبعاد [خط منخفض للصف] [خط منخفض للعمود] = القيمة ؛
ملاحظة : لا يمكن اختصار الجداول غير المنتظمة ثنائية الأبعاد بعد الإعلان عند تهيئة المصفوفة الداخلية أحادية البعد.
// جدول ثنائي الأبعاد غير منتظم يحدد مصفوفة ثنائية الأبعاد int[][]arr=newint[3][]; // 3 صفوف، أعمدة غير معروفة // تهيئة قيمة العنصر في المصفوفة ثنائية الأبعاد arr[0]= newint[ ]{1};// لا يمكن اختصار هذا كـ arr[0]={1}arr[1]=newint[]{2,3};arr[2]=newint[]{4,5,6 };
إن اجتياز المصفوفة ثنائية الأبعاد هو نفس المصفوفة أحادية البعد، والفرق هو أنه أولاً، يلزم وجود حلقة خارجية لاجتياز كل مصفوفة أحادية البعد.
for(inti=0;i<اسم المصفوفة ثنائية الأبعاد. length;i++){for(intj=0;j<اسم المصفوفة ثنائية الأبعاد[i].length;j++){System.out.print(ثنائي الأبعاد) اسم المصفوفة[i][j]);}System.out.println();}