CodeGym /בלוג Java /Random-HE /מטריקס ב-Java - 2D Arrays
John Squirrels
רָמָה
San Francisco

מטריקס ב-Java - 2D Arrays

פורסם בקבוצה

מהו מטריקס / מערך דו מימדי ב-Java?

"מטריקס היא אוסף של מספרים המסודרים למספר קבוע של שורות ועמודות." בדרך כלל מדובר במספרים ממשיים. באופן כללי, מטריצות יכולות להכיל מספרים מרוכבים אך לשם הפשטות נשתמש כאן רק במספרים שלמים. בואו נסתכל איך נראית מטריצה. הנה דוגמה למטריצה ​​עם 4 שורות ו-4 עמודות.מטריקס בג'אווה - מערכים דו-ממדיים - 2
איור 1: מטריצה ​​פשוטה של ​​4x4
על מנת לייצג את המטריצה ​​הזו בג'אווה, נוכל להשתמש במערך דו מימדי. מערך 2D לוקח 2 ממדים, אחד עבור השורה ואחד עבור העמודה. לדוגמה, אם תציין מערך שלם int arr[4][4] אז זה אומר שלמטריקס יהיו 4 שורות ו-4 עמודות. או שאתה יכול לומר שלכל שורה יהיו 4 עמודות. הגודל הכולל/מספר התאים במטריצה ​​יהיה שורות*עמודות = mxn = 4x4 = 16.מטריקס בג'אווה - מערכים דו-ממדיים - 3
איור 2: המטריצה[4][4] באיור 1 מיוצגת כמערך 2D ב-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" } };
	}
}

מעבר מערך דו-ממדי

כולנו יודעים לחצות מערכים רגילים בג'אווה. גם עבור מערכים דו מימדיים זה לא קשה. אנו משתמשים בדרך כלל בלולאות 'עבור' מקוננות לשם כך. חלק מהמתחילים עלולים לחשוב על זה כעל מושג חייזרי, אבל ברגע שתחפור בו יותר לעומק תוכל ליישם את זה עם קצת תרגול. עיין בקטע הבא. זה מציג רק את מספר העמודות התואמות לכל שורה להבנתך היסודית.
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: col 0 col 1 col 2 col 3 שורה 1: col 0 col 1 col 2 col 3 שורה 2: col 0 col 1 col 2 col 3 שורה 3: col 0 col 1 col 2 col 3

כיצד להדפיס מערך 2D ב-Java?

לאחר שתכיר את מעבר מערך דו-ממדי, הבה נסתכל על כמה דרכים להדפסת מערכי דו-ממד ב-Java.

שימוש בלולאת "עבור" מקוננת

זוהי הדרך הבסיסית ביותר להדפיס את המטריצה ​​ב-Java.
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

שימוש בלולאה "לכל אחד".

הנה דרך נוספת להדפיס מערכי 2D ב-Java באמצעות " לולאה קדמית ". זהו סוג מיוחד של לולאה המסופק על ידי 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);
	}
}
תְפוּקָה
[היי, אני קארן] [אני חדש בג'אווה] [אני אוהב לשחות] [לפעמים אני מנגן על מקלדת]

הסבר קוד

באיטרציה הראשונה, מחרוזת[]שורה תקרא "Hi, I am Karen" כמערך, תמיר אותו למחרוזת ואז תדפיס אותו. כך יתקיימו כל האיטרציות. כלי השירות המסופק כאן הוא שאתה לא צריך לעקוב אחר אינדקסים (i, j) או לולאות מקוננות.

סיכום

מערכי דו-ממד ב-Java הם הפשוטים ביותר מבין המערכים הרב-ממדיים. עד סוף מאמר זה אנו מקווים שאתה לא מפחד מהשימוש בהם, אלא מוכן להפשיל שרוולים לעבודה רצינית. אתה יכול להפעיל את כל קודי הדוגמאות האלה או לנפות באגים שורה אחר שורה לפי הנוחות שלך. אבל בסופו של דבר, ברצוננו לייעץ (כמו תמיד) שהמיומנות מגיעה עם תרגול וסבלנות רבה. מקווה שתהיה לך חווית למידה מהנה עם מערכי דו-ממד ב-Java. בהצלחה!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION