Array-Basics in Java
Multidimensional Arrays podem ser definidos em palavras simples como array de arrays. Os dados em matrizes multidimensionais são armazenados em forma tabular (na ordem principal da linha).

Sintaxe:

data_type [1ª dimensão] [2ª dimensão] [] .. [enésima dimensão] array_name = novo data_type [size1] [size2]…. [sizeN];

Onde:

  • data_type : tipo de dados a serem armazenados na matriz. Por exemplo: int, char, etc.
  • dimensão : a dimensão da matriz criada.
    Por exemplo: 1D, 2D, etc.
  • array_name : Nome do array
  • size1, size2,…, sizeN : Tamanhos das dimensões respectivamente.

Exemplos:

Two dimensional array:
int[][] twoD_arr = new int[10][20];

Three dimensional array:
int[][][] threeD_arr = new int[10][20][30];

Tamanho de matrizes multidimensionais : O número total de elementos que podem ser armazenados em uma matriz multidimensional pode ser calculado multiplicando o tamanho de todas as dimensões.

Por exemplo:
O array int [] [] x = new int [10] [20] pode armazenar um total de (10 * 20) = 200 elementos.
Da mesma forma, array int [] [] [] x = new int [5] [10] [20] pode armazenar um total de (5 * 10 * 20) = 1000 elementos.

Matriz bidimensional (matriz 2D)

A matriz bidimensional é a forma mais simples de uma matriz multidimensional. Um array bidimensional pode ser visto como um array de um array unidimensional para facilitar o entendimento.

Método indireto de declaração:

  • Declaração - Sintaxe:
    data_type [] [] array_name = novo data_type [x] [y];
            Por exemplo: int [] [] arr = new int [10] [20];
            
  • Inicialização - Sintaxe:
    array_name [row_index] [column_index] = value;
            Por exemplo: arr [0] [0] = 1;
            

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][] arr = new int[10][20];
        arr[0][0] = 1;
  
        System.out.println("arr[0][0] = " + arr[0][0]);
    }
}
Saída:
arr [0] [0] = 1

Método direto de declaração:

Sintaxe:


data_type[][] array_name = {
                             {valueR1C1, valueR1C2, ....}, 
                             {valueR2C1, valueR2C2, ....}
                           };

For example: int[][] arr = {{1, 2}, {3, 4}};

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][] arr = { { 1, 2 }, { 3, 4 } };
  
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
                System.out.println("arr[" + i + "][" + j + "] = "
                                   + arr[i][j]);
    }
}
Saída:
arr [0] [0] = 1
cheg [0] [1] = 2
cheg [1] [0] = 3
chega [1] [1] = 4

Acessando elementos de matrizes bidimensionais

Os elementos em matrizes bidimensionais são comumente referidos por x [i] [j], onde 'i' é o número da linha e 'j' é o número da coluna.

Sintaxe:

x[row_index][column_index]

Por exemplo:

int[][] arr = new int[10][20];
arr[0][0] = 1;

O exemplo acima representa o elemento presente na primeira linha e na primeira coluna.

Nota : Em matrizes, se o tamanho da matriz for N. Seu índice será de 0 a N-1. Portanto, para row_index 2, o número da linha real é 2 + 1 = 3.

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][] arr = { { 1, 2 }, { 3, 4 } };
  
        System.out.println("arr[0][0] = " + arr[0][0]);
    }
}
Saída:
arr [0] [0] = 1

Representação de matriz 2D em formato tabular: Uma matriz bidimensional pode ser vista como uma tabela com 'x' linhas e 'y' colunas onde o número da linha varia de 0 a (x-1) e o número da coluna varia de 0 a ( y-1). Uma matriz bidimensional 'x' com 3 linhas e 3 colunas é mostrada abaixo:

dois-d

Imprimir matriz 2D em formato tabular:

Para produzir todos os elementos de um array bidimensional, use loops for aninhados. Para isso, são necessários dois loops for, um para percorrer as linhas e outro para percorrer as colunas.

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][] arr = { { 1, 2 }, { 3, 4 } };
  
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(arr[i][j] + " ");
            }
  
            System.out.println();
        }
    }
}
Saída:
1 2 
3 4

Matriz tridimensional (matriz 3D)

A matriz tridimensional é uma forma complexa de uma matriz multidimensional. Uma matriz tridimensional pode ser vista como uma matriz de matriz bidimensional para facilitar o entendimento.

Método indireto de declaração:

  • Declaração - Sintaxe:
    data_type [] [] [] array_name = novo data_type [x] [y] [z];
            Por exemplo: int [] [] [] arr = new int [10] [20] [30];
            
  • Inicialização - Sintaxe:
    array_name [array_index] [row_index] [column_index] = value;
            Por exemplo: arr [0] [0] [0] = 1;
            

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][][] arr = new int[10][20][30];
        arr[0][0][0] = 1;
  
        System.out.println("arr[0][0][0] = " + arr[0][0][0]);
    }
}
Saída:
arr [0] [0] [0] = 1

Método direto de declaração:

Sintaxe:


data_type[][][] array_name = {
                              {
                               {valueA1R1C1, valueA1R1C2, ....}, 
                               {valueA1R2C1, valueA1R2C2, ....}
                              },
                              {
                               {valueA2R1C1, valueA2R1C2, ....}, 
                               {valueA2R2C1, valueA2R2C2, ....}
                              }
                             };

For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
  
        for (int i = 0; i < 2; i++)
            for (int j = 0; j < 2; j++)
                for (int z = 0; z < 2; z++)
                    System.out.println("arr[" + i
                                       + "]["
                                       + j + "]["
                                       + z + "] = "
                                       + arr[i][j][z]);
    }
}
Saída:
arr [0] [0] [0] = 1
arr [0] [0] [1] = 2
arr [0] [1] [0] = 3
chegada [0] [1] [1] = 4
arr [1] [0] [0] = 5
cheg [1] [0] [1] = 6
cheg [1] [1] [0] = 7
chegada [1] [1] [1] = 8

Acessando Elementos de Matrizes Tridimensionais

Os elementos em matrizes tridimensionais são comumente referidos por x [i] [j] [k] onde 'i' é o número da matriz, 'j' é o número da linha e 'k' é o número da coluna.

Sintaxe:

x[array_index][row_index][column_index]

Por exemplo:

int[][][] arr = new int[10][20][30];
arr[0][0][0] = 1;

O exemplo acima representa o elemento presente na primeira linha e na primeira coluna da primeira matriz na matriz 3D declarada.

Nota : Em matrizes, se o tamanho da matriz for N. Seu índice será de 0 a N-1. Portanto, para row_index 2, o número da linha real é 2 + 1 = 3.

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][][] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
  
        System.out.println("arr[0][0][0] = " + arr[0][0][0]);
    }
}
Saída:

arr [0] [0] [0] = 1

Representação de matriz 3D em formato tabular: Uma matriz tridimensional pode ser vista como uma tabela de matrizes com 'x' linhas e 'y' colunas onde o número da linha varia de 0 a (x-1) e o número da coluna varia de 0 para (y-1). Uma matriz tridimensional com 3 matrizes contendo 3 linhas e 3 colunas é mostrada abaixo:

Imprimir matriz 3D em formato tabular:

Para produzir todos os elementos de um array tridimensional, use loops for aninhados. Para isso, três loops for são necessários, um para percorrer as matrizes, o segundo para percorrer as linhas e outro para percorrer as colunas.

Exemplo:

class GFG {
    public static void main(String[] args)
    {
  
        int[][][] arr = { { { 1, 2 }, { 3, 4 } },
                          { { 5, 6 }, { 7, 8 } } };
  
        for (int i = 0; i < 2; i++) {
  
            for (int j = 0; j < 2; j++) {
  
                for (int k = 0; k < 2; k++) {
  
                    System.out.print(arr[i][j][k] + " ");
                }
  
                System.out.println();
            }
            System.out.println();
        }
    }
}
Saída:
1 2 
3 4 

5 6 
7 8

Inserindo um array multidimensional durante o tempo de execução:
Este tópico é forçado a aceitar a entrada definida pelo usuário em um array multidimensional durante o tempo de execução. É focado no usuário, primeiro fornecendo todas as entradas para o programa durante o tempo de execução e, depois de todas as entradas inseridas, o programa dará saída com relação a cada entrada de acordo. É útil quando o usuário deseja fazer a entrada para vários casos de teste com vários valores diferentes primeiro e depois de todas essas coisas feitas, o programa começará a fornecer a saída.

Como exemplo, vamos encontrar o número total de números pares e ímpares em uma matriz de entrada. Aqui, usaremos o conceito de array bidimensional. Aqui estão alguns pontos que explicam o uso dos vários elementos no próximo código:

  • O número inteiro da linha é considerado como o número de casos de teste e os valores da coluna são considerados como valores em cada caso de teste.
  • Um loop for() é usado para atualizar o número do caso de teste e outro loop for() é usado para obter os respectivos valores do array.
  • Como todas as entradas de entrada são feitas, novamente dois loops for() são usados ​​da mesma maneira para executar o programa de acordo com a condição especificada.
  • A primeira linha de entrada é o número total de TestCases.
  • A segunda linha mostra o número total dos primeiros valores da matriz.
  • A terceira linha fornece valores de array e assim por diante.

Implementação:

import java.util.Scanner;
  
public class GFGTestCase {
    public static void main(
        String[] args)
    {
        // Scanner class to take
        // values from console
        Scanner scanner = new Scanner(System.in);
  
        // totalTestCases = total
        // number of TestCases
        // eachTestCaseValues =
        // values in each TestCase as
        // an Array values
        int totalTestCases, eachTestCaseValues;
  
        // takes total number of
        // TestCases as integer number
        totalTestCases = scanner.nextInt();
  
        // An array is formed as row
        // values for total testCases
        int[][] arrayMain = new int[totalTestCases][];
  
        // for loop to take input of
        // values in each TestCase
        for (int i = 0; i < arrayMain.length; i++) {
            eachTestCaseValues = scanner.nextInt();
            arrayMain[i] = new int[eachTestCaseValues];
            for (int j = 0; j < arrayMain[i].length; j++) {
                arrayMain[i][j] = scanner.nextInt();
            }
        } // All input entry is done.
  
        // Start executing output
        // according to condition provided
        for (int i = 0; i < arrayMain.length; i++) {
  
            // Initialize total number of
            // even & odd numbers to zero
            int nEvenNumbers = 0, nOddNumbers = 0;
  
            // prints TestCase number with
            // total number of its arguments
            System.out.println(
                "TestCase " + i + " with "
                + arrayMain[i].length + " values:");
            for (int j = 0; j < arrayMain[i].length; j++) {
                System.out.print(arrayMain[i][j] + " ");
  
                // even & odd counter updated as
                // eligible number is found
                if (arrayMain[i][j] % 2 == 0) {
                    nEvenNumbers++;
                }
                else {
                    nOddNumbers++;
                }
            }
            System.out.println();
  
            // Prints total numbers of
            // even & odd
            System.out.println(
                "Total Even numbers: " + nEvenNumbers
                + ", Total Odd numbers: " + nOddNumbers);
        }
    }
}
// This code is contributed by Udayan Kamble.
Input:
2
2
1 2
3
1 2 3

Output:
TestCase 0 with 2 values:
1 2 
Total Even numbers: 1, Total Odd numbers: 1
TestCase 1 with 3 values:
1 2 3 
Total Even numbers: 1, Total Odd numbers: 2

Input:
3
8
1 2 3 4 5 11 55 66
5
100 101 55 35 108
6
3 80 11 2 1 5

Output:
TestCase 0 with 8 values:
1 2 3 4 5 11 55 66 
Total Even numbers: 3, Total Odd numbers: 5
TestCase 1 with 5 values:
100 101 55 35 108 
Total Even numbers: 2, Total Odd numbers: 3
TestCase 2 with 6 values:
3 80 11 2 1 5 
Total Even numbers: 2, Total Odd numbers: 4