CodeGym /مدونة جافا /Random-AR /المصفوفة في جافا - مصفوفات ثنائية الأبعاد
John Squirrels
مستوى
San Francisco

المصفوفة في جافا - مصفوفات ثنائية الأبعاد

نشرت في المجموعة

ما هو مصفوفة مصفوفة/ثنائية الأبعاد في جافا؟

"المصفوفة عبارة عن مجموعة من الأرقام مرتبة في عدد ثابت من الصفوف والأعمدة." عادة ما تكون هذه أرقام حقيقية. بشكل عام، يمكن أن تحتوي المصفوفات على أرقام مركبة، ولكن من أجل التبسيط، سنستخدم هنا الأعداد الصحيحة فقط. دعونا نلقي نظرة على كيف تبدو المصفوفة. فيما يلي مثال لمصفوفة مكونة من 4 صفوف و4 أعمدة.المصفوفة في جافا - المصفوفات ثنائية الأبعاد - 2
الشكل 1: مصفوفة 4x4 بسيطة
من أجل تمثيل هذه المصفوفة في جافا، يمكننا استخدام مصفوفة ثنائية الأبعاد. تأخذ المصفوفة ثنائية الأبعاد بعدين، أحدهما للصف والآخر للعمود. على سبيل المثال، إذا قمت بتحديد مصفوفة أعداد صحيحة int arr[4][4]، فهذا يعني أن المصفوفة ستحتوي على 4 صفوف و4 أعمدة. أو يمكنك القول أنه سيكون هناك 4 أعمدة لكل صف. سيكون الحجم الإجمالي/عدد الخلايا في المصفوفة عبارة عن صفوف*أعمدة = mxn = 4x4 = 16.المصفوفة في جافا - المصفوفات ثنائية الأبعاد - 3
الشكل 2: المصفوفة [4] [4] في الشكل 1 ممثلة بمصفوفة ثنائية الأبعاد في Java

قم بتعريف وتهيئة مصفوفة ثنائية الأبعاد

فيما يلي بعض الطرق المختلفة إما للإعلان عن حجم المصفوفة فقط، أو لتهيئتها دون ذكر الحجم.
public class Matrices {

	public static void main(String[] args) {

		// declare & initialize 2D arrays for int and string
		int[][] matrix1 = new int[2][2];
		int matrix2[][] = new int[2][3];

           //the size of matrix3 will be 4x4
		int[][] matrix3 = { { 3, 2, 1, 7 },
					   { 9, 11, 5, 4 },
					   { 6, 0, 13, 17 },
					   { 7, 21, 14, 15 } };

		String[][] matrix4 = new String[2][2];

           //the size of matrix5 will be 2x3
           // 3 cols because at max there are 3 columns
		String[][] matrix5 = { { "a", "lion", "meo" },
				            { "jaguar", "hunt" } };
	}
}

اجتياز المصفوفة ثنائية الأبعاد

نعلم جميعًا كيفية اجتياز المصفوفات العادية في Java. بالنسبة للمصفوفات ثنائية الأبعاد، الأمر ليس صعبًا أيضًا. نستخدم عادةً حلقات "for" المتداخلة لهذا الغرض. قد يفكر بعض المبتدئين في الأمر على أنه مفهوم غريب، ولكن بمجرد التعمق فيه، ستتمكن من تنفيذ ذلك من خلال بعض الممارسة. ألق نظرة على المقتطف التالي. يعرض فقط عدد الأعمدة المقابلة لكل صف لفهمك الشامل.
public class MatrixTraversal {
	public static void main(String[] args) {

	    int[][] matrix = new int[4][4];
	    for (int i = 0; i < matrix.length; i++)
	    {
		 // length returns number of rows
		 System.out.print("row " + i + " : ");
		 for (int j = 0; j < matrix[i].length; j++)
		 {
		    // here length returns # of columns corresponding to current row
		    System.out.print("col " + j + "  ");
		 }
	    System.out.println();
	   }
	}
}
انتاج |
الصف 0: العمود 0 العمود 1 العمود 2 العمود 3 الصف 1: العمود 0 العمود 1 العمود 2 العمود 3 الصف 2: العمود 0 العمود 1 العمود 2 العمود 3 الصف 3: العمود 0 العمود 1 العمود 2 العمود 3

كيفية طباعة صفيف ثنائي الأبعاد في جافا؟

بعد أن تتعرف على اجتياز المصفوفات ثنائية الأبعاد، فلنلقِ نظرة على بعض الطرق لطباعة المصفوفات ثنائية الأبعاد في Java.

استخدام حلقة "for" المتداخلة

هذه هي الطريقة الأساسية لطباعة المصفوفة في جافا.
public class MatrixTraversal {

    public static void printMatrix(int matrix[][])
    {
        for (int i = 0; i < matrix.length; i++)
	  {
	    // length returns number of rows
	    for (int j = 0; j < matrix[i].length; j++)
	    {
	      // here length returns number of columns corresponding to current row
		// using tabs for equal spaces, looks better aligned
		// matrix[i][j] will return each element placed at row ‘i',column 'j'
		System.out.print( matrix[i][j]  + "\t");
	     }
	     System.out.println();
	   }
	}

	public static void main(String[] args) {

		int[][] matrix = { { 3, 2, 1, 7 },
					 { 9, 11, 5, 4 },
					 { 6, 0, 13, 17 },
					 { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
انتاج |
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

باستخدام حلقة "لكل".

إليك طريقة أخرى لطباعة صفائف ثنائية الأبعاد في Java باستخدام " حلقة foreach ". هذا نوع خاص من الحلقات توفره Java، حيث سيتم تكرار الصف int[]من خلال كل صف في المصفوفة. حيث أن المتغير "العنصر" سيحتوي على كل عنصر يوضع في فهرس العمود خلال الصف.
public class MatrixTraversal {

	public static void printMatrix(int matrix[][]){
		for (int [] row : matrix)
		{
			// traverses through number of rows
			for (int element : row)
			{
				// 'element' has current element of row index
				System.out.print( element  + "\t");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {

		int[][] matrix = {  { 3, 2, 1, 7 },
					  { 9, 11, 5, 4 },
					  { 6, 0, 13, 17 },
					  { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
انتاج |
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

باستخدام طريقة "Arays.toString ()".

تعمل طريقة Arrays.toString() في Java على تحويل كل معلمة تم تمريرها إليها كمصفوفة واحدة وتستخدم طريقتها المضمنة لطباعتها. لقد أنشأنا مجموعة وهمية ثنائية الأبعاد للعب حولها. تعمل نفس الطريقة أيضًا مع المصفوفات الصحيحة. نحن نشجعك على ممارسة ذلك لممارسة الرياضة الخاصة بك.
import java.util.Arrays;
public class MatrixTraversal {
	public static void printMatrix(String matrix[][]){

		for (String[] row : matrix) {
			// convert each row to a String before printing
			System.out.println(Arrays.toString(row));
		}
	}

	public static void main(String[] args) {

		String [][] matrix = {  { "Hi, I am Karen" },
						{ "I'm new to Java"},
						{ "I love swimming" },
						{ "sometimes I play keyboard"} };
		printMatrix(matrix);
	}
}
انتاج |
[مرحبًا، أنا كارين] [أنا جديد في لغة Java] [أحب السباحة] [أحيانًا ألعب على لوحة المفاتيح]

شرح الكود

في التكرار الأول، سيقرأ صف السلسلة [] "مرحبًا، أنا كارين" كمصفوفة، ثم يحولها إلى سلسلة ثم يطبعها. هذه هي الطريقة التي ستحدث بها جميع التكرارات. الأداة المساعدة المتوفرة هنا هي أنك لست مضطرًا إلى تتبع أي فهارس (i، j) أو حلقات متداخلة.

خاتمة

المصفوفات ثنائية الأبعاد في Java هي أبسط المصفوفات متعددة الأبعاد. بحلول نهاية هذه المقالة، نأمل ألا تكون خائفًا من استخدامها، بل مستعدًا لتشمير سواعدك للقيام ببعض الأعمال الجادة. يمكنك تشغيل كافة نماذج الأكواد هذه أو تصحيح الأخطاء سطرًا تلو الآخر حسب ما يناسبك. ولكن في النهاية، نود أن ننصح (كما هو الحال دائمًا) بأن المهارة تأتي مع الممارسة والصبر. أتمنى أن تستمتع بتجربة تعليمية ممتعة مع المصفوفات ثنائية الأبعاد في Java. حظ سعيد!
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION