Erro em matriz

Estou tentando resolver uma questão onde o algoritmo tem que ler uma matriz e imprimir uma outra matriz,
conforme mostrado a seguir :

   1   2   3                     7   4   1
   4   5   6                     8   5   2 
   7   8   9                     9   6   3
package matrizes;

import java.util.Scanner;

/* Criar um algoritmo que leia uma matriz  e imprima uma outra matriz,
   conforme mostrado a seguir :
   
       1   2   3                     7   4   1
       4   5   6                     8   5   2 
       7   8   9                     9   6   3
 **/

public class Questao09 {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int[][] num = new int[3][3];

		int aux1 = 0;
		int aux2 = 0;

		for (int i = 0; i < num.length; i++) {

			System.out.println(i + " vetor ");

			for (int j = 0; j < num[i].length; j++) {

				num[i][j] = input.nextInt();

			}

		}

		for (int i = 0; i < num.length; i++) {

			for (int j = 0; j < num[i].length; j++) {

				aux1 = num[i][j];
				
				aux2 = num[i][2];
				
				num[i][2] = aux1;
				
				num[i][j] = aux2;

			}

		}

		for (int i = 0; i < num.length; i++) {

			for (int j = 0; j < num[i].length; j++) {

				System.out.print(num[i][j] + "  ");

			}

			System.out.println("  ");
		}

	}

}

Fiz esse código a após várias tentativas o porgrama não exibe a matriz como deveria. Alguem poderia me ajudar?

Faz um teste de mesa do seu algoritmo que fica fácil achar o erro.

1 curtida

1 : Criei uma matriz para armazenar os indices invertidos
2: Troquei os numeros com o auxilio da variavel aux as posições 0 e 2.

Foi a melhor solução que encontrei mas aceito sugestões que poderiam melhorar o algoritmo.
Segue código…

package matrizes;

import java.util.Scanner;

/* Criar um algoritmo que leia uma matriz  e imprima uma outra matriz,
   conforme mostrado a seguir :
   
       1   2   3                     7   4   1
       4   5   6                     8   5   2 
       7   8   9                     9   6   3
 **/

public class Questao09 {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);

		int[][] num = new int[3][3];
		int[][] inverso= new int [3][3];
		int aux = 0;
		

		for (int i = 0; i < num.length; i++) {

			System.out.println(i + " vetor ");

			for (int j = 0; j < num[i].length; j++) {

				num[i][j] = input.nextInt();

			}

		}

		for (int i = 0; i < num.length; i++) {

			for (int j = 0; j < num[i].length; j++) {

				System.out.print(num[i][j] + "  ");

			}

			System.out.println("    ");

		}
		
     
		for (int i = 0; i < num.length; i++) {

			for (int j = 0; j < num[i].length; j++) {

				inverso[j][i] = num[i][j];
				

				
			}

		}
		 System.out.println("    ");
		 System.out.println(" Matriz invertida ");
		 System.out.println("    ");
		 
		for (int i = 0; i < num.length; i++) {

			for (int j = 0; j < num[i].length; j++) {
				
			aux=inverso[i][2];
			inverso[i][2]= inverso[i][0];
			inverso[i][0]= aux;
                
				System.out.print(inverso[i][j] + "  ");
				

			}

			System.out.println("    ");
			System.out.println("    ");

		}
		
		

	}

}

0 vetor 
1
2
3
1 vetor 
4
5
6
2 vetor 
7
8
9
1  2  3      
4  5  6      
7  8  9      
    
 Matriz invertida 
    
7  4  1      
    
8  5  2      
    
9  6  3     

@staroski obrigado pela dica , percebi que estou com dificudades em fazer teste de mesa e debugar . Vou continuar praticando, se tiver alguma sugestão para uma melhor compreensão ficarei muito grato :pray:

1 curtida

Isso aí é só questão de praticar.

No caso desse exercício está bacana, são matrizes pequenas então é mais prático/legível usar uma matriz auxiliar para as transformações.

1 curtida