Vetores Bidimensionais

Olá pessoal, gostaria que vcs me ajudassem com um método revert, que reverte uma matriz de inteiros, ou seja, o primeirp número vai pra última posição, segunda pra penultima e assim por diante…
fiz esse método, mas ele não funciona com matrizes com linhas e colunas ímpares, por exemplo matriz[5][5]…

public static void revert(int matriz[][]) { int num; int tamanho = matriz.length; for (int i = 0; i < tamanho / 2; i++) { for (int j = 0; j < matriz.length; j++) { num = matriz[i][j]; matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j]; matriz[tamanho - 1 - i][tamanho - 1 - j] = num; } } }

Tem certeza que não funciona?

Olhe a saida desse codigo:

public class LixoK {

    int[][] matrix = new int[9][9];
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new LixoK();
    }
    
    public LixoK(){
        
        for(int x = 0; x<9; x++){
            for(int y=0; y<9; y++){
                matrix[x][y]= x*10+y;
            }
        }
        printMatrix();
        revert(matrix);
        printMatrix();
    }
    
    public void printMatrix(){
        for(int x = 0; x<9; x++){
            System.out.println("");
            for(int y=0; y<9; y++){
                System.out.print(matrix[x][y] + "-");
            }
        }
        System.out.println("");
        System.out.println("");
    }
    
    public static void revert(int matriz[][]) {   
        int num;   
        int tamanho = matriz.length;   
        for (int i = 0; i < tamanho / 2; i++) {   
            for (int j = 0; j < matriz.length; j++) {   
                num = matriz[i][j];   
                matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j];   
                matriz[tamanho - 1 - i][tamanho - 1 - j] = num;   
            }   
        }   
    }  

}

tenho, na verdade esse método não modifica apenas a linha do meio, por exemplo:

69 82 31 22 73
84 66 57 6 77
[color=red]9 18 30 81 19[/color]
98 60 45 95 7
22 21 0 30 17

17 30 0 21 22
7 95 45 60 98
[color=red]9 18 30 81 19[/color]
77 6 57 66 84
73 22 31 82 69

Meu caro,

Primeiro escreva o algoritmo no caderno primeiro, pense na logica que vc ira usar.

Tem razao, a linha do meio não foi revertida.

Vamos dar uma olhada melhor nesse teu método então.

public static void revert(int matriz[][]) { int num; int numero = 0; int tamanho = matriz.length; for (int i = 0; i < tamanho / 2; i++) { for (int j = 0; j < matriz.length; j++) { num = matriz[i][j]; matriz[i][j] = matriz[tamanho - 1 - i][tamanho - 1 - j]; matriz[tamanho - 1 - i][tamanho - 1 - j] = num; } } if (tamanho % 2 != 0) { for (int i = 0; i < tamanho / 2; i++) { numero = matriz[(tamanho / 2)][i]; matriz[(tamanho / 2)][i] = matriz[(tamanho / 2)][tamanho - 1 - i]; matriz[(tamanho / 2)][tamanho - 1 - i] = numero; } } }