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
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 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
Forte abraço.
Muito obrigado! Agora está muito mais esclarecido!
Manda um curtir ali na respota, valeu.