CodeGym /Java блог /Случаен /Матрица в Java - 2D масиви
John Squirrels
Ниво
San Francisco

Матрица в Java - 2D масиви

Публикувано в групата

Какво е Matrix / 2D Array в Java?

„Матрицата е колекция от числа, подредени във фиксиран брой редове и колони.“ Обикновено това са реални числа. По принцип матриците могат да съдържат комплексни числа, но за по-голяма простота тук ще използваме само цели числа. Нека да разгледаме How изглежда една матрица. Ето пример за матрица с 4 реда и 4 колони.Матрица в Java - 2D масиви - 2
Фигура 1: Проста матрица 4x4
За да представим тази матрица в Java, можем да използваме двуизмерен масив. 2D масивът приема 2 измерения, едно за реда и едно за колоната. Например, ако укажете целочислен масив int arr[4][4], това означава, че матрицата ще има 4 реда и 4 колони. Или можете да кажете за всеки ред ще има 4 колони. Общият размер/броят на клетките в една матрица ще бъде редове*колони = mxn = 4x4 = 16.Матрица в Java - 2D масиви - 3
Фигура 2: Матрицата [4][4] на Фигура 1, представена като 2D масив в Java

Декларирайте и инициализирайте 2D масив

Ето няколко различни начина or само да декларирате размера на масива, or да го инициализирате, без да споменавате размера.

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" } };
	}
}

Обхождане на 2D масив

Всички знаем How да преминаваме през редовни масиви в Java. За 2D масиви също не е трудно. Ние обикновено използваме вложени 'for' цикли за това. Някои начинаещи може да го помислят за няHowва извънземна концепция, но веднага щом се задълбочите в нея, ще можете да я приложите с известна практика. Разгледайте следния фрагмент. Той показва само броя на колоните, съответстващи на всеки ред, за вашето пълно разбиране.

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

Как да отпечатате 2D масив в Java?

След като се запознаете с обхождането на 2D масиви, нека да разгледаме няколко начина за отпечатване на 2D масиви в Java.

Използване на вложен цикъл „for“.

Това е най-основният начин за отпечатване на матрицата в 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 с помощта на „ foreach цикъл “. Това е специален тип цикъл, осигурен от Java, където int[]row ще преминава през всеки ред в матрицата. Като има предвид, че променливата „елемент“ ще съдържа всеки елемент, поставен в индекса на колона през реда.

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 преобразува всеки параметър, подаден към него, като единичен масив и използва своя вграден метод, за да го отпечата. Създадохме фиктивен String 2D масив, за да си поиграем. Същият метод работи и за масиви с цели числа. Препоръчваме ви да го практикувате за вашето упражнение.

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] [Обичам да плувам] [понякога свиря на клавиатура]

Код Обяснение

В първата итерация String[]row ще прочете „Здравей, аз съм Карен“ като масив, ще го преобразува в низ и след това ще го отпечата. Така ще се извършват всички повторения. Предоставената тук помощна програма е, че не е нужно да следите ниHowви индекси (i, j) or вложени цикли.

Заключение

2D масивите в Java са най-простите от многоизмерните масиви. До края на тази статия се надяваме, че не се страхувате да ги използвате, по-скоро сте готови да запретнете ръкави за сериозна работа. Можете да изпълнявате всички тези примерни codeове or да отстранявате грешки ред по ред, Howто ви е удобно. Но в крайна сметка бихме искали да ви посъветваме (Howто винаги), че умението идва с голяма практика и търпение. Надяваме се да имате забавно учене с 2D масиви в Java. Късмет!
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION