有9行18列二维数组,请将列(4,10)(2,12)(0,15)(6,16)(3,14)(9,13)(8,17)(1,7)(5,11)计算均值合并为9行9列的二维数组。
再将所有9行9列二维数组中(i,j)和(j,i)两个元素合并计算均值,形成三角形矩阵数组。
注意:数据类型要用float来计算。
完整测试用例:
这个案例好实现得很,合并二维数组并计算均值的功能,如下所示;
public class ArrayOperations {
public static void main(String[] args) {
// 定义原始二维数组
float[][] array = new float[9][18];
// 给二维数组赋值
// 定义新的二维数组
float[][] newArray = new float[9][9];
// 遍历需要合并的列
int[][] cols = {{4,10},{2,12},{0,15},{6,16},{3,14},{9,13},{8,17},{1,7},{5,11}};
for (int i = 0; i < cols.length; i++) {
// 对于每一列,计算均值并存储到新的二维数组中
int col1 = cols[i][0];
int col2 = cols[i][1];
float sum = 0;
for (int row = 0; row < array.length; row++) {
sum += array[row][col1] + array[row][col2];
}
float avg = sum / (array.length * 2);
for (int row = 0; row < newArray.length; row++) {
newArray[row][i] = avg;
}
}
// 定义三角形矩阵数组
float[][] triangleArray = new float[9][9];
// 遍历每一行和每一列
for (int i = 0; i < newArray.length; i++) {
for (int j = 0; j < newArray.length; j++) {
if (i == j) {
// 对角线上的元素,直接复制
triangleArray[i][j] = newArray[i][j];
} else if (i < j) {
// 上三角矩阵的元素,计算均值并存储
float sum = newArray[i][j] + newArray[j][i];
float avg = sum / 2;
triangleArray[i][j] = avg;
triangleArray[j][i] = avg;
}
}
}
// 输出结果
for (int i = 0; i < triangleArray.length; i++) {
for (int j = 0; j < triangleArray[i].length; j++) {
System.out.print(triangleArray[i][j] + "\t");
}
System.out.println();
}
}
}