Какво е Matrix / 2D Array в Java?
„Матрицата е колекция от числа, подредени във фиксиран брой редове и колони.“ Обикновено това са реални числа. По принцип матриците могат да съдържат комплексни числа, но за по-голяма простота тук ще използваме само цели числа. Нека да разгледаме How изглежда една матрица. Ето пример за матрица с 4 реда и 4 колони.Декларирайте и инициализирайте 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] [Обичам да плувам] [понякога свиря на клавиатура]
GO TO FULL VERSION