java如图合并二维数组

img


有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来计算。
完整测试用例:

img

这个案例好实现得很,合并二维数组并计算均值的功能,如下所示;

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();
        }
    }
}