Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的2dint数组反转_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java中的2dint数组反转

Java中的2dint数组反转,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我遇到的问题是,我必须创建一个程序,该程序使用一个对象反转二维数组中每行的元素,并打印出结果矩阵。我的代码只打印出每行的前3个数字。这是我的代码: class Reverse { void matrixReverse(int[][] data) { int row_val = data.length; int col_val = data[0].length; int[][] data_reverse = new int[row_val

我遇到的问题是,我必须创建一个程序,该程序使用一个对象反转二维数组中每行的元素,并打印出结果矩阵。我的代码只打印出每行的前3个数字。这是我的代码:

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 the array

        Reverse reverse = new Reverse();
        reverse.matrixReverse(data);
    }
}

正如您所看到的,它只打印前3行数字,但我需要它来打印所有的行。

您的列是可变宽度的,但您从第一行获得宽度(可能根本不存在!)。在访问数组元素之前,需要检查数组的大小。您还可以切换数组大小参数,首先从行开始

要解决特定的问题,需要为行循环中的每一行设置列值

void matrixReverse(int[][] data) {
    int rowWidth = data.length;
    int[][] reversedData = new int[rowWidth][];
    for (int row = rowWidth - 1; row >= 0; row--) {
        int colWidth = data[row].length;
        int reverseRow = rowWidth - 1 - row;
        reversedData[reverseRow] = new int[colWidth];
        for (int col = colWidth - 1; col >= 0; col--) {
            int reverseCol = colWidth - 1 - col;
            reversedData[reverseRow][reverseCol] = data[row][col];
        }
    }
    for (int row = 0; row < rowWidth; row++) {
        int colWidth = reversedData[row].length;
        for (int col = 0; col < colWidth; col++) {
            System.out.println(reversedData[row][col]);
        }
        System.out.println();
    }
}
void matrixReverse(int[][]数据){
int rowWidth=data.length;
int[][]反向数据=新int[rowWidth][];
对于(int row=rowWidth-1;row>=0;row--){
int colWidth=数据[行].长度;
int reverseRow=行宽-1-行;
reversedData[reverseRow]=新整数[colWidth];
对于(int col=colWidth-1;col>=0;col--){
int reverseCol=colWidth-1-col;
reversedData[reverseRow][reverseCol]=数据[row][col];
}
}
对于(int row=0;row

p.S.row_val和Colu val都是坏名字。它们是宽度而不是值,Java中的命名约定是colWidth和rowWidth而不是col\u width或row\u width。

您的列是可变宽度,但您从第一行(可能不存在!)获取宽度。在访问数组元素之前,需要检查数组的大小。您还可以切换数组大小参数,首先从行开始

要解决特定的问题,需要为行循环中的每一行设置列值

void matrixReverse(int[][] data) {
    int rowWidth = data.length;
    int[][] reversedData = new int[rowWidth][];
    for (int row = rowWidth - 1; row >= 0; row--) {
        int colWidth = data[row].length;
        int reverseRow = rowWidth - 1 - row;
        reversedData[reverseRow] = new int[colWidth];
        for (int col = colWidth - 1; col >= 0; col--) {
            int reverseCol = colWidth - 1 - col;
            reversedData[reverseRow][reverseCol] = data[row][col];
        }
    }
    for (int row = 0; row < rowWidth; row++) {
        int colWidth = reversedData[row].length;
        for (int col = 0; col < colWidth; col++) {
            System.out.println(reversedData[row][col]);
        }
        System.out.println();
    }
}
void matrixReverse(int[][]数据){
int rowWidth=data.length;
int[][]反向数据=新int[rowWidth][];
对于(int row=rowWidth-1;row>=0;row--){
int colWidth=数据[行].长度;
int reverseRow=行宽-1-行;
reversedData[reverseRow]=新整数[colWidth];
对于(int col=colWidth-1;col>=0;col--){
int reverseCol=colWidth-1-col;
reversedData[reverseRow][reverseCol]=数据[row][col];
}
}
对于(int row=0;row

p.S.row_val和Colu val都是坏名字。它们是宽度而不是值,Java中的命名约定是colWidth,rowWidth而不是col_-width或row_-width。

行,int[][]reversedData=new int[][rowWidth];遇到问题,因为新int后的第一对方括号为空。很抱歉,我还是java新手,而且我在学校压力很大,所以如果有任何帮助,我将不胜感激。@JoshC25我的坏朋友改变了语法。我还没来得及测试它,而且我已经很久没有使用2d数组了;遇到问题,因为新int后的第一对方括号为空。很抱歉,我还是java新手,而且我在学校压力很大,所以如果有任何帮助,我将不胜感激。@JoshC25我的坏朋友改变了语法。我还没有时间测试它,我已经很久没有使用2d阵列了。