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} }