Ajuda com Array Bidimensional

Galera, estou precisando entender como “andar” pelo array, principalmente identificar a diagonal principal e secundaria, estou super perdido nessa matéria, se alguém puder ajudar eu agradeço :slight_smile:

assim

	int x[][] = new int[][] { {1,2,3},{4,5,6}, { 7,8,9 }};
		for(int i=0;i<3;i++) {
			System.out.println(x[i][i]); // diagonal principal
		}

?

Sim :smiley: e como faria pra andar em todos os numeros, da primeira fileira, dps segunda e terceira? E também achar a diagonal secundaria

Rapaz, antes de mais nada, é preciso fazer uma matriz no papel para que você possa identificar um padrão para andar pelas diagonais, veja abaixo:

1 2 3 4 5 6 7 8 9

O padrão que podemos perceber para andar pela diagonal principal é bem simples: o contador da linha e o contador da coluna são iguais.

Primeiro, é claro, devemos criar e popular um array:

public static void main(String[] args) {
        // declarando array de ordem 3 (3x3)
        int[][] array = new int[3][3];
        // criando um gerador aleatório para não perder tempo digitando números
        Random gerador = new Random();

        // laço para popular o array
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                array[i][j] = gerador.nextInt(99) + 1; //gerando valor entre 1 e 99
            }
        }

Uma vez o array populado e criado, podemos entrar na diagonal principal:

        // laço para entrar nas diagonais
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                // se entrar nessa condição você está na diagonal principal
                if (i == j) {
                    System.out.println(array[i][j]);
                }
            }
        }

Agora entrar na diagonal secundária, precisamos pensar um pouco mais. Se lembra so array que fiz ali em cima?
Observe
1 2 3 -> aqui estamos na linha 1 e coluna 3 (i = 0, j = 2) 4 5 6 -> aqui estamos na linha 2 e coluna 2 (i = 1, j = 1) 7 8 9 -> aqui estamos na linha 3 e coluna 1 (i = 2, j = 0)

Podemos observar que a coluna da diagonal secundária se mexe de acordo com o estado do contador em relação ao tamanho do array-(linha+1), é sempre assim. Basta observar como se comportam os números da diagonal principal. Não entendeu? Vou colocar o código abaixo.

Então, precisamos apenas alterar o laço que percorre a diagonal principal:
Veja:

      // laço para entrar nas diagonais
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                // se entrar nessa condição você está na diagonal principal
                if (i == j) {
                    System.out.println("Estou na diagonal principal: " + array[i][j]); // aqui você está na diagonal principal
                    System.out.println("Estou na diagonal secundária: " + array[i][array.length-(i+1)]); // aqui você está na diagonal secundária
                }
            }
        }

É basicamente isso. Qualquer dúvida posta ae :smiley:
Forte abraço.

1 curtida

Muito obrigado! Agora está muito mais esclarecido!

Manda um curtir ali na respota, valeu. :smiley:

1 curtida