Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何返回这样的多维数组_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 如何返回这样的多维数组

Java 如何返回这样的多维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,这有点复杂: int[]generate(int[]input)创建一个与input具有相同结构的新数组。 每行的内容都写在下一行。最后一行的内容位于第一行。如果一行的长度对于所有移动的数字来说都太短,则剩余的数字将添加到此行的每个元素上。如果行的长度对于所有移位的数字都太长,则剩余字段将用此行中数字的平均值填充 例如:输入: int[][] test1 = { {1, 2, 3, -4, -9}, {-20, 13}, {30, 19, 12, -12} } 输出: { {30, 19, 1

这有点复杂:
int[]generate(int[]input)
创建一个与input具有相同结构的新数组。 每行的内容都写在下一行。最后一行的内容位于第一行。如果一行的长度对于所有移动的数字来说都太短,则剩余的数字将添加到此行的每个元素上。如果行的长度对于所有移位的数字都太长,则剩余字段将用此行中数字的平均值填充

例如:输入:

int[][] test1 = { {1, 2, 3, -4, -9}, {-20, 13}, {30, 19, 12, -12} }
输出:

{ {30, 19, 12, -12, 12}, {-9, -8}, {-20, 13, -3, -3} }

如果您能给我一些建议,例如我的if语句应该是什么样子,我将不胜感激。

下面是rotate方法的一个可能实现。我在注释中添加了对代码所做操作的解释:

public static int[][] rotate(int[][] matrix) {
    int[][] result = new int[matrix.length][];

    for(int i = 0; i < matrix.length; ++i) {
        // if we exceed the length of the result matrix, let's rotate back to 0 (first row).
        int indexResult = i + 1 == matrix.length ? 0 : i + 1;
        result[indexResult] = new int[matrix[indexResult].length];

        // The row in which to insert is shorter than the row to be inserted
        if(result[indexResult].length < matrix[i].length) {
            // Let's find the sum of all the remaining (overflow) numbers.
            int sumNumber = 0;
            for(int j = matrix[i].length - result[indexResult].length - 1; j < matrix[i].length; ++j) {
                sumNumber += matrix[i][j];
            }
            for(int j = 0; j < result[indexResult].length; ++j) {
                result[indexResult][j] = matrix[i][j] + sumNumber;
            }
        } else if(result[indexResult].length > matrix[i].length) {  // The row in which to insert is longer
            double average = 0.0;
            int j = 0;
            while(j < matrix[i].length) {
                average += matrix[i][j];
                result[indexResult][j] = matrix[i][j];
                ++j;
            }
            average = average / matrix[i].length;
            while(j < result[indexResult].length) {
                result[indexResult][j] = (int) average;
                ++j;
            }
        } else { // The length is the same. just copy the array;
            for(int j = 0; j < matrix[i].length; ++j) {
                result[indexResult][j] = matrix[i][j];
            }
        }
    }
    return result;
}
输出为:

{ {30, 19, 12, -12, 12}, {-9, -8}, {-20, 13, -3, -3} }  

你能一步一步地演示一下你是如何从示例输入到示例输出的吗。将行下移一行,除最后一行外,该行将成为顶行。2.移动时,您会发现当前移动的行比下一行长,在这种情况下,将剩余的数字相加,然后添加到此(较长)行的所有元素,然后放置到下一行。3.但是,如果要移动的行比它下面或旁边的行短,那么这一行的所有数字都将建立平均值并附加到较短的行P。s您必须将这些行想象成一个矩阵,非常感谢much@stacy很高兴我能帮忙。
{ {30, 19, 12, -12, 12}, {-9, -8}, {-20, 13, -3, -3} }