2D Int Array Reversal in Java -


the problem having must create program uses object reverse elements of each row in 2d array , prints out resulting matrix. code have prints out first 3 numbers of each row in reverse. code:

class reverse {      void matrixreverse(int[][] data) {         int row_val = data.length;         int col_val = data[0].length;          int[][] data_reverse = new int[row_val][col_val];          for(int row = row_val - 1; row >= 0; row--){             for(int col = col_val - 1; col >= 0; col--){                 data_reverse[row_val - 1 - row][col_val - 1 - col] = data[row][col];             }         }         for(int row = 0; row < row_val; row++){             for(int col = 0; col < col_val; col++){                 system.out.println(data_reverse[row][col]);             }             system.out.println();         }     } }  public class arrayreverse {      public static void main(string[] args) {         int[][] data = {             {3, 2, 5},             {1, 4, 4, 8, 13},             {9, 1, 0, 2},             {0, 2, 6, 3, -1, -8}         }; // creates array          reverse reverse = new reverse();         reverse.matrixreverse(data);     } } 

the output is:

6 2 0  0 1 9  4 4 1  5 2 3 

as can see, it's printing first 3 numbers of rows need print of them.

your columns variable width yet getting width first row (which may not exist!). need check size of array before accessing element of it. have array size parameters switched, start row first.

to fix specific problem, need set col_val each row inside row loop.

void matrixreverse(int[][] data) {     int rowwidth = data.length;     int[][] reverseddata = new int[rowwidth][];     (int row = rowwidth - 1; row >= 0; row--) {         int colwidth = data[row].length;         int reverserow = rowwidth - 1 - row;         reverseddata[reverserow] = new int[colwidth];         (int col = colwidth - 1; col >= 0; col--) {             int reversecol = colwidth - 1 - col;             reverseddata[reverserow][reversecol] = data[row][col];         }     }     (int row = 0; row < rowwidth; row++) {         int colwidth = reverseddata[row].length;         (int col = 0; col < colwidth; col++) {             system.out.println(reverseddata[row][col]);         }         system.out.println();     } } 

p.s. row_val , col_val bad names. widths not values , naming convention in java colwidth , rowwidth not col_width or row_width.


Comments